Question

J'ai un UIView qui est plus petit que le superview pour que je puisse représenter ce point de vue comme une vue modale lorsqu'un bouton est cliqué.

J'ai réussi à faire ce qui suit: * Ajouter un sous-vue à la superview. * Centré ce point de vue modal

J'essaie maintenant de faire les éléments derrière la UIView cliquables. Et aussi ajouter une ombre grise te le ourside de mon point de vue modal afin que l'utilisateur comprenne que la vue modale est la vue en mise au point.

Je voudrais savoir comment y parvenir.

Je ne veux pas utiliser la transition modale de présentation. Je sais et ai déjà mis en oeuvre dans d'autres projets. Toute aide est appréciée.

Était-ce utile?

La solution

La chose la plus simple serait de poser une UIView avec un plein écran translucide fond gris derrière votre vue « modal ». Ensuite, il va intercepter toutes les touches. Il pourrait ressembler à ceci:

UIView *dimBackgroundView = [[UIView alloc] initWithFrame:theSuperview.bounds];
dimBackgroundView.backgroundColor = [[UIColor grayColor] colorWithAlphaComponent:.5f];

[theSuperview addSubview:dimBackgroundView];
[theSuperview addSubview:modalView];

Pour référence ultérieure, vous pouvez définir myView.userInteractionEnabled = NO aux événements tactiles désactiver sur une vue.

Autres conseils

Il y a plusieurs façons de le faire. Si vous avez une vue personnalisée qui a un emplacement personnalisé, vous pouvez le modifier comme ça:

Créer une instance var:

UIView* backgroundView;

Et à chaque fois que vous en avez besoin, mettre derrière votre vue personnalisée:

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];

Lorsque vous n'avez plus besoin

   [backgroundView removeFromSuperview];
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top