La meilleure Méthode pour Afficher un Popup Fenêtre Transparente sur l'iPhone?
Je suis en train de construire un iOS 6 iPhone app dans Xcode 4.6 et me pose des questions sur la meilleure façon d'obtenir ce type de fenêtre:
Plus précisément, l'iPhone capture d'écran sur la droite, où, si un utilisateur appuie sur une face ou une UIView dans la fenêtre principale, partiellement transparent liste s'affiche avec des informations plus détaillées, comme une photo portrait et données textuelles -- mais la vue d'origine (une collection de photos ici) reste visible, et les temporisateurs/compteurs de continuer à compté de ce point de vue.
Je pensais que ce serait une solution possible iPhone Modal Vue plus Petit que l'écran mais il ne fonctionne pas pour moi. Pas indiqué ci-dessus est un bouton annuler que je suis également l'intention de mettre dans la liste, de sorte que l'utilisateur peut revenir à la vue de dessous. Lorsque le délai expire, la vue de détail disparaît aussi.
Dois-je utiliser presentModalViewController et le présentateur/présenté régime, ou de l'utilisation d'un parent-enfant-vue de la relation avec un storyboard, segue, ou dois-je utiliser loadNibNamed, ou une sorte de hack pour surmonter l'iPhone limitation de l'affichage d'un non-plein écran modal? Il couvre la plupart de l'écran, mais je veux m'assurer que la vue de dessous est visible et toujours active, puisqu'elle fournit des informations à l'utilisateur qui n'est pas dans la liste (timer, etc.). L'utilisateur n'aura pas besoin d'interagir avec l'écran ci-dessous, mais j'aimerais qu'il soit partiellement visible.
J'ai conçu le popup vue comme un distinct viewcontroller dans mon principal storyboard, non pas comme un fichier xib. Les connexions et les points de vente sont formés à partir de l'interface builder pour mon code, appelé ProfileViewController.
AVERTISSEMENT: Ma terminologie peut être incorrect et erroné. Le pop-up ou de la liste peut être une UIView, UIViewController, UIWindow, ou tout ce qui fonctionne le mieux en programmant pour résoudre le problème. Je ne suis pas attaché à être un certain type de widget, tant que la fonctionnalité des miroirs de ce que je cherche.
Merci d'avance pour vos suggestions!
peut faire clearcolor de viewcontroller et la Conception de nouveaux uiview sur elle comme u le souhaitez.. puis sur [auto.vue addsubview:your_viewcontroller.vue];
RE: Kalpesh. Merci. Dois-je sous-classe UIView pour les pop-up, ou de créer un accompagnement ViewController? Pas tout à fait sûr où mettre les poignées (raccords de sortie) pour des articles qui apparaissent dans une UIView -- le sous-jacent ViewController? J'ai sous-classé UIView avant de créer des widgets que je puisse passer au bureau de l'IB, mais jamais conçu un programme personnalisé dans Interface Builder.
vous pouvez créer popview par programmation au moment de l'exécution. l'ajouter dans la fenêtre . Vérifier ma réponse.
OriginalL'auteur Cindeselia | 2013-10-22
Vous devez vous connecter pour publier un commentaire.
voulez-vous accomplir cela?
Voici deux
viewControllers
l'un au dessus de l'autre.vc2
est unchildViewController
devc1
avec untransparent
arrière-plan. Dans votre cas, vous pouvez mettre unUILabel
haut de la pile avecbackgroundColor
black
etalpha = 0.5
.Tous les événements de
vc2
le feu survc2.m
. Utilisez ce code sur l'image, cliquez:Et dans
vc2.m
mettre cela surviewDidLoad
pour faire de cetteviewController
transparent.De prise de vue transparente un
viewController
fera de votre code propre, comme tout le code devc2
sera dans une classe à part.MODIFIER
Afin de faire une chose, tout d'Abord ajouter un
UIView
à votrexib
qui sera un des bords arrondis et le cadre que vous souhaitez selon votre capture d'écran.Pour les bords arrondis, vous pouvez utiliser cette
category
.backgroundColor
de cetteUIView
seraclearColor
:Maintenant mettre un
UILabel/UIView/UIImage
dont la trame est égale àUIView
ci-dessus et alpha est de 0,5 avec noir couleur d'arrière-plan. Vous pouvez le faire directement à partir dexib
. Inutile de définir le cadre à l'aide de code.Puis commencer à mettre vos autres contrôles à l'intérieur
UIView
Elle est apparue sur la ligne viewController.vue.image = self.vue.cadre;.........Résiliation d'application en raison de uncaught exception 'NSInvalidArgumentException', la raison: '*** -[NSPlaceholderMutableString initWithString:]: néant l'argument' *** Premier lancer de pile d'appel: (0x160b012 0x1318e7e 0x160adeb 0xd49e68 0x1d569 0x1d06c 0x33e1c7 0x33e232 0x5724 0x61db 0x52785a 0x52699b 0x5280df 0x52ad2d 0x52acac 0x522a28 0x28f972 0x28fe53 0x26dd4a 0x25f698 0x266ddf9 0x266dad0 0x1580bf5 0x1580962 0x15b1bb6 0x15b0f44 0x15b0e1b 0x266c7e3 0x266c668 0x25cffc 0x221d 0x2145) de la libc++abi.dylib: mettre fin à appelé à lancer une exception
Comme je l'ai dit, mettre un semi transparent
UILabel
aveclabel.frame = self.view.frame
. Et pour la croix-cliquez sur le bouton utilisez ce code:[UIView animateWithDuration:0.25 delay:0.0 options:UIViewAnimationOptionCurveLinear animations:^ { self.view.alpha = 0; } completion:^(BOOL finished) { if(finished) { [self.view removeFromSuperview]; } }];
Désolé pour poser une autre question, mais pourquoi avons-nous besoin de la UILabel? Ne devrions-nous pas faire la Vue d'en haut dans la pile quelque chose comme une UIView avec un fond transparent, ou une UIImage avec une image transparente chargé? (Me demandais, il semble contre-intuitif)
J'ai juste essayé de mettre un UILabel ou une UIImageView en haut de la pile, et il supprimé tout ce que j'avais déjà dans ma pile! Copier/coller ne fonctionne pas non plus, il a juste pris un de mes éléments copiés et a remplacé le sommet de la pile; tout le reste a disparu. Comment puis-je garder les choses dans la Vue d'en haut que j'ai déjà dessiné et aménagé (et joint)?
OriginalL'auteur Vaibhav Saran
Essayer cette
Alors comment peut-wen supprimer fenêtre pop-up après que sa tâche est accomplie?
utiliser ce [viewPopup removeFromSuperview]; viewPopup=nil;
OriginalL'auteur Kalpesh
Suivez l'étape ci-dessous pour une vue transparente :
l'étape 1:
étape 2:
peut être de l'aide.
si vous souhaitez ajouter par programmation puis aller avec @iPatel réponse.
Non, idéalement je voudrais un hybride des deux, comme la mise en page de mon design dans Interface Builder car il y a une tonne de petits widgets qui doivent être soigneusement placé dans la fenêtre contextuelle, mais instancier une version de la fenêtre, dans le code, si possible.
OriginalL'auteur Dhaval Bhadania
Ajouter
#import <QuartzCore/QuartzCore.h>
cadre de votre .m fichier et utilisez le code suivantCe qui précède est transparent dimView dont la taille est similaire à la fenêtre.
ci-dessus
self.searchTblContainerView
est vue principale qui contiennent l'ensemble de votreUIControls
ces étiquettes, textField, Bouton, etc... et le configurer selon vos besoins.Définie par défaut caché de la propriété de
self.dimView.hidden = YES;
et d'afficher et de masquer par la suite animation comme alertView (apple).
Code suivant pour afficher dimView.
Code suivant pour cacher dimView.
Code ci-dessus est de la simple logique, pourrait être utile dans votre cas.
si vous ne voulez pas l'utiliser dimView alors il n'est pas important/besoin pour l'utilisation, la, je viens d'utiliser dimView pour vous vue personnalisée ressembler alertView.
Non, je suis d'accord avec le dimView, pas aussi confiants dans la conception d'une UIView sans guidage visuel. Je suis un peu gâché par l'Interface de la Construction, j'ai donc supposer automatiquement, j'avais besoin d'un ViewController si je ont été de la conception de la fenêtre, dans l'IB et de faire tous mes points de vente & connexions par ctrl-glisser. Pas sûr de savoir comment je peux faire une UIView au lieu de cela, sans un ViewController.
OriginalL'auteur iPatel