[Swift] [RESOLU]Calcul de la size des vues dans un UITabBar
Je suis en train de m'expérimenter avec les délices de la rotation sous iOS 8. A priori c'est tout simple grâce à la nouvelle méthode viewTransitionToSize de UIViewController
override func viewWillTransitionToSize(size: CGSize, withTransitionCoordinator coordinator: UIViewControllerTransitionCoordinator) {
self.redessine(size)
println("redessine Ecran 1 : \(size)")
}
A chaque rotation on reçoit la nouvelle size de la vue. J'ai utilisé ce système dans un UITabBar, avec 3 vues embarqués. A chaque rotation, les vues reçoivent l'événement viewWillTransitionToSize. L'ennui c'est que seule la vue courante sélectionnée dans le TabBar récupère la bonne taille.
Exemple avec la troisième vue sélectionnée dans le tabBar :
Exemple quand je fait une rotation :
size vue 1 : (320.0, 480.0)
size vue 2 : (320.0, 480.0)
size vue 3 : (480.0, 320.0)
Je m'attendais à avoir (480.0, 320.0) partout, alors que seule la vue sélectionnée dans le TabBar reçoit la bonne valeur.
Réponses
Faut que tu rappelles [super viewWillTransitionToSize: ...] dans ton implémentation.
Aucun warning ! C'est sous Xcode 6.2, une condition imposée pour le MOOC de Jussieu.
Effectivement je n'avais pas pensé à reporter l'événement au supérieur. C'est ballot. Merci. Je vais tester ça.
Non, cela ne change rien. Ce qui est logique en fait. L'information étant fausse à la base, la propager au super ne règle rien.
Je suis en train de télécharger Xcode 6.4. Je verrais bien comment il réagit, lui ..
Sont-elles bien redimmensionnées quand elles deviennent visibles ?
Non justement ! C'est là le problème. Elles conservent l'orientation de leurs créations, même si le device a changé d'orientation. Ce qui donne ce genre d'affichage :
Pour avoir une image correcte, je dois tourner le device, ce qui provoque le bon redimensionnement.
Quand le redimensionnent est normal, cela donne :
Problème résolu ! Il suffit de recompiler l'application avec Xcode 6.4 et .. magique ! La TabBar fournit la bonne information aux vues embarquées, pendant les changements d'orientation.
Non, j'ai juste testé sur mon iPod Touch (iOS 8.4). Je vais regarder avec différentes versions du simulateur.
Je viens de tester avec les simulateurs iOS 8.0, iOS 8.1 et iOS 8.2 sous Xcode 6.2 et Xcode 6.4. Le bug ne se manifeste que sur les applications compilés avec Xcode 6.2.