Elementi disabili su UIView dietro UIView modale
-
30-09-2019 - |
Domanda
ho un UIView che è più piccolo del superview modo che io possa rappresentare questo punto di vista come vista modale quando un pulsante viene premuto.
Sono riuscito a effettuare le seguenti operazioni: * Aggiungere una visualizzazione secondaria al superview. * Centrato questo punto di vista modale
Ora sto cercando di rendere gli elementi alla base della UIView cliccabile. E anche aggiungere un'ombra grigia te l'ourside della mia vista modale in modo che l'utente capisce che la vista modale è la vista a fuoco.
Mi piacerebbe sapere come raggiungere questo.
Non voglio usare la transizione presentazione modale. Lo so e ho già implementato questo in altri progetti. Ogni aiuto è apprezzato.
Soluzione
La cosa più semplice sarebbe quella di porre un UIView
a schermo intero con uno sfondo grigio traslucido dietro la vista "modale". Poi sarà intercettare tutti i tocchi. Potrebbe sembrare qualcosa di simile:
UIView *dimBackgroundView = [[UIView alloc] initWithFrame:theSuperview.bounds];
dimBackgroundView.backgroundColor = [[UIColor grayColor] colorWithAlphaComponent:.5f];
[theSuperview addSubview:dimBackgroundView];
[theSuperview addSubview:modalView];
Per riferimento futuro, è possibile impostare myView.userInteractionEnabled = NO
di eventi di tocco disabilitare su una visione.
Altri suggerimenti
Ci sono diversi modi per farlo. Se si dispone di una visualizzazione personalizzata che ha percorso personalizzato, è possibile modificarlo così:
Crea un var
esempio:
UIView* backgroundView;
E quando ne hai bisogno, metterlo dietro la visualizzazione personalizzata:
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];
Quando non serve più
[backgroundView removeFromSuperview];