elementos de Desactivar el UIView detrás UIView modal
-
30-09-2019 - |
Pregunta
tengo un UIView que es menor que el supervista para que pueda representar este punto de vista como una vista modal cuando se hace clic en un botón.
He conseguido hacer lo siguiente: * Agregar una vista secundaria a la supervista. * Centrado este punto de vista modal
Ahora estoy tratando de hacer que los elementos detrás de la UIView unclickable. Y también añadir una sombra gris te la ourside de mi punto de vista modal de manera que el usuario entiende que la vista modal es la vista en el enfoque.
Me gustaría saber cómo lograr esto.
No deseo usar la transición presentación modal. Yo sé, y ya se han puesto en práctica esto en otros proyectos. Cualquier ayuda es apreciada.
Solución
Lo más sencillo sería sentar un UIView
pantalla completa con un fondo gris translúcido detrás de la vista "modal". A continuación, se interceptará todos los toques. Podría ser algo como esto:
UIView *dimBackgroundView = [[UIView alloc] initWithFrame:theSuperview.bounds];
dimBackgroundView.backgroundColor = [[UIColor grayColor] colorWithAlphaComponent:.5f];
[theSuperview addSubview:dimBackgroundView];
[theSuperview addSubview:modalView];
Para referencia futura, se puede establecer myView.userInteractionEnabled = NO
a eventos de toque desactivar en una vista.
Otros consejos
Hay varias maneras de hacerlo. Si usted tiene una vista personalizada que tiene ubicación personalizada, puede modificarlo así:
Crear una var
ejemplo:
UIView* backgroundView;
Y siempre que lo necesite, lo puso detrás de su vista personalizada:
if (backgroundView == nil)
backgroundView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.height, [UIScreen mainScreen].bounds.size.width)];
backgroundView.backgroundColor = [[UIColor grayColor] colorWithAlphaComponent:.5f];
[self.view addSubview:backgroundView];
[backgroundView animateBump:customView.view];
[backgroundView addSubview:customView.view];
Cuando no lo necesita más
[backgroundView removeFromSuperview];