2017-09-08 2 views
1

J'ai travaillé sur des projets réalisés par d'autres développeurs où j'ai dû gérer quelques modifications. Et j'ai eu la chance de parcourir les pop ups qu'ils ont créés. Ici, je parle de pop ups personnalisés avec UILabels, UIButtons, UITextFields etc, pas de UIAlertViewControllers ou des feuilles d'action.Nouveau viewcontroller ou nouvelle vue dans la même vue contrôleur pour les pop ups dans iOS

De nombreux développeurs (qui étaient plus âgés pour moi) ont utilisé cette approche qui est en ajoutant une vue d'effet visuel dans le même contrôleur de vue et en plus d'ajouter une vue qui est censée apparaître comme la pop-up. Et en cours d'exécution ils cachent et montrent la vue selon l'exigence. Ici, vous n'ajoutez pas plus de poids à votre application, mais cela vous donne mal à la tête lorsque vous essayez de modifier votre interface utilisateur avec des contraintes. Et certains des développeurs ont utilisé une bibliothèque tierce telle que 'MZFormSheetController', où vous créez un contrôleur de vue séparé et l'utilisez comme l'affichage contextuel. Ici, vous pouvez ajouter/modifier les contrôles de l'interface utilisateur, leurs contraintes selon vos besoins. Mais plus vous ajoutez de contrôleurs de vue à votre storyboard, plus vous augmentez la taille de votre storyboard/application.

J'aimerais connaître votre opinion et quelle est la meilleure pratique quand il s'agit de pop-ups? (Masquer et afficher la vue dans le contrôleur même vue ou l'ajout de nouveaux viewcontroller)

+0

est-ce une application iPhone? Si oui alors s'il vous plaît allez sur Cocoa & trouver qui vous convient comme https://www.cocoacontrols.com/search?q = pop –

+0

Salut, je suis passé par cocoacontrols et j'ai utilisé ces pop ups. J'ai besoin de savoir quelle est la meilleure approche d'en haut. en utilisant un contrôleur de vue séparé ou en créant une nouvelle vue sur le même contrôleur de vue? Merci d'avance! – NavodaP

Répondre

1

Vous pouvez faire quelque chose comme ça dans viewController 1, lorsque vous cliquez sur un bouton:

let ShareVC = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "ShareVC") as! ShareVC 
    ShareVC.image = returnFinalImage() 
    self.addChildViewController(ShareVC) 
    ShareVC.view.frame = self.view.frame 
    self.view.addSubview(ShareVC.view) 
    ShareVC.didMove(toParentViewController: self) 

Ensuite, il suffit de définir la valeur alpha la seconde vue dans viewDidLoad() principal de viewController comme ceci:

override func viewDidLoad() { 
     super.viewDidLoad() 
     self.view.backgroundColor = UIColor.black.withAlphaComponent(0.8) 
     self.showAnimate() 
} 

func showAnimate(){ 
    self.view.transform = CGAffineTransform(scaleX: 1.3, y: 1.3) 
    self.view.alpha = 0.0; 
    UIView.animate(withDuration: 0.25, animations: { 
     self.view.alpha = 1.0 
     self.view.transform = CGAffineTransform(scaleX: 1.0, y: 1.0) 
    }); 
} 

func removeAnimate(){ 
    UIView.animate(withDuration: 0.25, animations: { 
     self.view.transform = CGAffineTransform(scaleX: 1.3, y: 1.3) 
     self.view.alpha = 0.0; 
    }, completion:{(finished : Bool) in 
     if (finished) 
     { 
      self.view.removeFromSuperview() 
     } 
    }); 
} 

@IBAction func closeAction(_ sender:UIButton) { 
    removeAnimate() 
} 

enter image description here

Ou vous pouvez modalement Prese nt votre contrôleur de vue à l'aide des enchaînements et sa propriété de présentation « Au cours du contexte actuel » de l'inspecteur des propriétés

enter image description here

Ou du code que vous pouvez faire ceci:

let popup : PopupVC = self.storyboard?.instantiateViewControllerWithIdentifier("PopupVC") as! PopupVC 
let navigationController = UINavigationController(rootViewController: popup) 
navigationController.modalPresentationStyle = UIModalPresentationStyle.OverCurrentContext 
self.presentViewController(navigationController, animated: true, completion: nil) 

Hope this utile . Codage heureux. :)

+0

merci, selon votre exemple, il semble que vous préférez utiliser le nouveau contrôleur de vue comme une pop-up au lieu d'ajouter une vue sur le même contrôleur de vue. – NavodaP

+0

ouais! Vous avez bien compris! Comme vous l'avez dit "Ici, vous n'ajouterez pas plus de poids à votre application, mais cela vous donne mal à la tête lorsque vous essayez de modifier votre interface avec des contraintes." Donc, ces options sont le meilleur moyen d'échapper à ces problèmes liés à la contrainte et plus sur votre écran devient plus classifié. C'est la raison pour laquelle je fais ça. –

+0

génial! Merci beaucoup! – NavodaP

2

Si vous souhaitez créer un popup personnalisé à utiliser dans toute l'application, vous pouvez créer une vue séparée ou afficher le contrôleur avec votre design personnalisé qui ajustera la vue en fonction de la valeur et des contraintes définies.

Vous pouvez soit présent que contrôleur de vue au-dessus de tout contrôleur (Vous ne pouvez pas en mesure de présenter quelque temps si elle a déjà ouvert un modèle)

OMI, une meilleure option est que vous pouvez créer une fenêtre séparée pour montrer la fenêtre .

Écrire et afficher la méthode accessible depuis n'importe où, Ajouter cette nouvelle fenêtre lorsque vous avez besoin d'afficher et de supprimer cette fenêtre lorsque vous avez besoin de masquer.

Vous pouvez également utiliser la bibliothèque prêt à l'emploi avec tous les contrôles comme pod « MMPopupView »

+0

Cela peut aussi être une bonne option comme dans swift 3 -> "ETPopupView". BTW Belle approche. –