Présenter UIViewController comme un modal avec un fond transparent
Je suis en train de présenter un viewcontroller avec un fond transparent sur les deux iOS 7 et iOS 8.
Juste en changeant le viewcontroller de modalPresentationStyle propriété FormSheet je peux le faire fonctionner sur iOS 7.1.
Ce que je veux, c'est un moyen universel de que sur ios7+
J'ai essayé d'utiliser d'autres options pour modalPresentationStyle, comme: OverCurrentContext, CurrentContext et PageSheet.
J'ai aussi essayé d'utiliser la modalPresentationStyle.Personnalisé mais n'ont aucun succès.
J'ai NavigationController si ça peut aider en quoi que ce soit.
Le code pour la présentation de view controller:
InfoViewController *info = [[InfoViewController alloc] initWithNibName:@"InfoViewController" bundle:nil];
[self presentViewController:info animated:YES completion:nil];
Et le code pour le viewDidLoad(ce qui je pense est une partie) de la présente ViewController:
override func viewDidLoad() {
super.viewDidLoad()
//Do any additional setup after loading the view.
self.modalPresentationStyle = UIModalPresentationStyle.PageSheet
}
Im en utilisant swift et Xcode 6.
Voici une capture d'écran de ce que j'ai et de ce que je veux, respectivement:
Voici un exemple de code: https://github.com/pbassut/TransBackgroundViewController
source d'informationauteur Patrick Bassut
Vous devez vous connecter pour publier un commentaire.
Pour ceux qui sont encore avec ce problème avant de présenter le UIViewController définir la modalPresentationStyle de l'présentées UIViewController .La coutume et il fonctionne sur iOS 8(Xcode 6.1). Qui est, vous devez la définir dans la présentation de UIViewController
J'ai essayé cette solution et cela fonctionne sur iOS 7 et 8:
Remarque: Être conscient de la différence entre "presentingViewController " et " presentedViewController'.
J'ai été en mesure de réaliser cela avec pas de code:
Dans le storyboard, sur la présentation de-vue-contrôleur (c'est à dire avant d'enchaîner à celui que vous voulez être transparent), aller aux attributs de l'inspecteur. Sur cet onglet, il y a des cases à cocher pour "Définit le Contexte" et "Contexte". Vérifiez ces.
Sur la séquence, il faut le "Présent Modal".
Sur la destination/présenté-vue-contrôleur, allez à l'onglet attributs. Dans la rubrique "Présentation" de liste déroulante, sélectionnez "Plus de Contexte Actuel".
Sur la destination-vue-contrôleur, ensemble de vue pour avoir un fond clair.
Sur la destination-vue-contrôleur, claque vers le bas 2 UIViews: l'Un est votre "transparent", et de l'autre, un "contenu". Définir la transparence d'avoir tout ce que alpha vous voulez et mettre tous vos déchets dans le "contenu".
Aucun des ci-dessus a fonctionné pour moi. Pour le faire fonctionner sur iOS 10, j'ai tout simplement:
presented.modalPresentationStyle = .overFullScreen
presenting.present(presented, animated: true)
Ensuite, réglez la vue du contrôleur de vue de la racine pour avoir un transparent ou semi-transparent de couleur. Ne changez pas l'alpha ou la totalité de ses sous-vues auront le même alpha.
Je obtenir transparent avec différents styles de Swift 2.0 en suivant les étapes ci-dessous. Analyser compatibles avec votre code.
La transparence de-vue-contrôleur(modal-vue-contrôleur) est lancé par segue quand un clic sur un bouton sur l'écran principal du contrôleur.
Segue Paramètres:
Dans la vue Principale de contrôleur:
Modal-Vue-Contrôleur sur la table de montage séquentiel:
Sur votre Modal-Vue-Contrôleur
Exemple Des Captures D'Écran:
Pour toute autre question, s'il vous plaît commentaire ici 🙂
Si vous confondre ou plus sur la avec vue transparente ensuite, le contrôleur de regarder ma vidéo tutoriel pour vous sur Youtube 😀
iOS8+
Ci-dessous extrait de code permettra de résoudre ce problème dans iOS8+
J'ai eu un problème similaire, je voulais faire quelque chose de similaire à la seconde capture d'écran que vous présentez ici (le brésilien/portugais journal!)
Je l'ai résolu comme ça. J'ai inséré une UIView qui a couvert la totalité de la Vue du Contrôleur, puis je suis allée les Attributs de l'Inspecteur, et j'ai mis le UIView la couleur d'arrière-plan à noir, avec une opacité de 50%. Ensuite, j'ai inséré une autre UIView au-dessus de la première, et j'ai travaillé sur un