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.

È stato utile?

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];
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top