transitions animées
Bonjour,
j'essaie de travailler les UIViewAnimationOptions.
J'ai crée le code suivant en créant 3 Views nommées container, view1 et view2.
La première transition fonctionne, mais la seconde me donne le message d'erreur:
"fatal error: unexpectedly found nil while unwrapping an Optional value
(lldb)"
si quelqu'un peut m'orienter ? Merci
class ViewController: UIViewController {
@IBOutlet weak var container: UIView!
@IBOutlet weak var view2: UIView!
@IBOutlet weak var view1: UIView!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
@IBAction func goTransitionAction(_ sender: UIButton) {
transitionCurlUp21()
}
@IBAction func goTransitionActionBis(_ sender: UIButton) {
transitionCurlUp12()
}
func transitionCurlUp21() {
var views21 : (frontView: UIView, backView: UIView)
views21 = (frontView: self.view2, backView: self.view1)
let transitionOptions = UIViewAnimationOptions.transitionCurlUp
UIView.transition(from: views21.frontView, to: views21.backView, duration: 3.0, options: transitionOptions, completion: nil)
}
func transitionCurlUp12() {
var views12 : (frontView: UIView, backView: UIView)
views12 = (frontView: self.view1, backView: self.view2)
let transitionOptions = UIViewAnimationOptions.transitionCurlUp
UIView.transition(from: views12.frontView, to: views12.backView, duration: 3.0, options: transitionOptions, completion: nil)
}
}
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Cette erreur signifie que tu tentes d'utiliser un objet vide (contenant nil). Est-ce que view1 et view2 sont correctement initialisé ?
Pourquoi utiliser des tupples ? Cela complique ton code pour pas grand chose.
En fait, j'essaie de comprendre.
Peux-tu m'orienter vers un exemple ?
Si je comprend bien, tu as une view container sur l'écran, et tu veux alternativement changer son contenu par celui de view1 et de view2. C'est bien ça ?
oui c'est bien çà .
J'ai simplifié le code (surtout supprimer les "weak"
Je peux alterner le changement de vues.
Il reste qu'après 2 transitions, mes vues ne sont plus centrées dans la vue container
Par contre il est préférable d'utiliser les balises de code...
Cela fonctionne très bien en plein écran, avec deux vues s'affichant successivement sur la vue principale. J'ai pris une durée de 0.2 secondes, la valeur initiale de 2 étant interminable a s'exécuter.
Il suffit de toucher l'écran (événement touchesBegan() ) pour déclencher la transition.
a
La même chose, s'affichant dans une vue Container située au centre de l'écran :
Merci pour ta réponse,
je suppose qu'il me faudra programmer la conception de ma vue directement en code ?
Je fais tout en code, parce que c'est plus naturel pour moi. Il y a certainement moyen de faire la même chose avec Storyboard.
Merci pour cette réponse.
Ce qui m'amène à demander si on peux récupérer le code d'un paramètrage d'une vue avec storyBoard ?