iPhone Modal View Plus petit que l'écran
Je suis en train de faire quelque chose qui ne devrait pas être si compliqué que ça, mais je ne peux pas le comprendre.
J'ai un UIViewController l'affichage d'une UITableView. Je veux présenter un menu contextuel lorsque l'utilisateur presse sur une ligne. Je veux que ce soit un semi-transparente afficher les étiquettes et les boutons.
Je pourrais utiliser un AlertView, mais je veux le plein contrôle sur le format des étiquettes et les boutons et souhaitez utiliser Interface Builder.
Donc j'ai créé ma petite vue 250x290, définir l'alpha à .75 et de créer une vue contrôleur avec les points de vente pour gérer les différents événements de l'utilisateur.
Maintenant, je veux vous présenter.
Si j'utilise presentModalViewController deux (indésirables) les choses arrivent
1) le point de vue couvre l'ensemble de l'écran (mais la barre d'état).
2) Il est semi-transparent, mais ce que je vois "derrière" ce n'est pas le parent de la vue, mais les applications de vue de la racine.
J'ai essayé de l'ajouter en tant que sous-vue, mais rien ne se passe, donc je n'ai pas fait quelque chose de bien:
RestaurantContextVC* modalViewController = [[[RestaurantContextVC alloc] initWithNibName:@"RestaurantContextView" bundle:nil] autorelease];
[self.view addSubview:modalViewController.view];
Est-il possible de faire ce que je veux?
Merci à l'avance.
Gonso
source d'informationauteur gonso
Vous devez vous connecter pour publier un commentaire.
Je suis codage chose de similaire. Mon approche.....
Pas à l'aide de dismissModalViewControllerAnimated et presentModalViewController:animation.
Design personnalisé et complet de la taille d'affichage de l'IB. Dans son viewDidLoad corps du message, définir la couleur d'arrière-plan à clearColor, de sorte que l'espace sur le point de vue ne sont pas couverts par les contrôleurs sont transparentes.
J'ai mis une UIImageView sous les contrôleurs de la variable de la vue. Le UIImageView contient un photoshoped de l'image, qui a des coins arrondis et l'arrière-plan est transparent. Cette image sert de conteneur.
J'utilise CoreAnimation de présenter ou de rejeter le flottant vue modale style d'affichage de: (la FloatingViewController.m)
wangii
C'est à peu près la solution que j'ai trouvé.
Je charge la vue avec loadNibNamed et puis il suffit de l'ajouter sur le dessus avec addSubView, comme ceci:
Pourriez-vous élaborer sur les points 3 et 4?
Ce que j'ai fait pour donner le point de vue de la round rect aspect est à mettre à l'intérieur d'un round rect button.
Ce code va effectivement vous permettre d'avoir un petit flottant de vue, mais si la vue est plus petit que son parent, l'utilisateur peut interagir avec la partie visible de la mère.
À la fin, j'ai créer mon point de vue avec la même taille, mais a gardé le code juste au cas où.
Gonso
Je vous recommande de considérer l'utilisation d'une manette de navigation à glisser dans votre sous-vue au lieu de la superposition. C'est le modèle et les petits avantages que vous pouvez penser, vous obtiendrez en faisant votre propre chemin sera largement compensée par le principe de (moins) surprise.
Si vous avez vraiment vraiment faire de cette façon, je crois que le truc est d'ajouter de la première table vue comme une sous-vue de transparence "holding" vue que le point de vue du contrôleur maintient. Puis ajouter le nouveau sous-vue comme un autre sous-vue.
Encore une fois, si vous voulez vraiment le faire, au lieu d'ajouter un transparent "holding", puisque ce pop-up est essentiellement modale, je voudrais faire une sous-vue directement de la fenêtre.
Vous pourriez mettre dans un noir transparent bouclier derrière elle pour éviter touche le fond et de se concentrer d'entrée sur le popup.
Mais sérieusement, envisager de sauter un contrôleur sur la pile ou de l'utilisation que l'affichage des alertes. Sauf si vous avez embauché un $$ designer, il n'est probablement pas va appropriées sur l'iPhone.
Ce que j'ai fait était de créer un UIViewController sur le dessus de mon UINavigation contrôleur dans mon délégué d'application et en fait une propriété d'un objet singleton pour plus de commodité:
}
À n'importe quel point dans mon application, je peux alors faire appel par exemple
La BaseViewController utilisé sur la partie supérieure seulement hérite de UIViewController et met en place un affichage en plein écran: