Xcode & XIB : Choisir un ViewController en fonction de l'orientation de l'iPhone

JérémyJérémy Membre
novembre 2016 modifié dans API UIKit #1

Bonjour à  tous,


 


Sur mon application, j'aimerais avoir un design totalement différent lorsque je passe d'un mode portrait à  un mode paysage (à  l'instar de ce que nous trouvons dans l'app santé dans le suivi de la distance parcouru). Est il possible dans XIB de définir un ViewController par orientation ? Le but serait de pouvoir designé chaque mode depuis le constructeur d'interface...  ::)


 


Merci par avances pour vos réponses.  :D


Réponses

  • Joanna CarterJoanna Carter Membre, Modérateur
    C'est possible de créer, dans XIB ou storyboard, un seul contrôleur avec deux (ou plus) "agencements", en utilisant l'autolayout.
  • Tu pourrais t'en sortir avec un seul XIB mais deux grosses vues principales entre lesquelles tu switcherais selon l'orientation.


    Problème de cette solution : tu vas devoir créer deux fois plus d'IBOutlets...


  • Merci pour vos réponses !  :)


     




    Tu pourrais t'en sortir avec un seul XIB mais deux grosses vues principales entre lesquelles tu switcherais selon l'orientation.


    Problème de cette solution : tu vas devoir créer deux fois plus d'IBOutlets...




     


    C'est ce que j'ai fait mais je trouve pas ça extraordinaire. Lorsque l'orientation de l'iPhone change, je cache un view et je fais apparaà®tre l'autre mais ce n'est pas extraordinaire comme solution...  :)


  • Joanna CarterJoanna Carter Membre, Modérateur
    novembre 2016 modifié #5

    Jérémy, regardes les screenshots de mon appli FestJazz sur l'AppStore iOS, surtout ceux pour les iPhone. Tu y verras que les agencements pour portrait et paysage sont tout différents, mais ce n'est qu'un seul contrôleur avec l'autolayout. Quand même, il n'y a pas de IBOutlet sauf ceux pour connecter les controls au contrôleur




  • Jérémy, regardes les screenshots de mon appli FestJazz sur l'AppStore iOS, surtout ceux pour les iPhone. Tu y verras que les agencements pour portrait et paysage sont tout différents, mais ce n'est qu'un seul contrôleur avec l'autolayout. Quand même, il n'y a pas de IBOutlet sauf ceux pour connecter les controls au contrôleur




     


    D'accord, je vais jeter un oeil.  ;)

  • Salut Joanna, j'ai regardé ton app et c'est exactement ce que j'aimerais faire. Tu peux m'aiguiller (tuto ou autre) pour j'apprenne à  le faire ?


  • Joanna CarterJoanna Carter Membre, Modérateur
    OK. L'appli, c'est universal ou pour iPhone ou iPad seulement ?


    Tu peux dessiner les agencements que tu veuilles ?
  • Je te présente mes excuses d'avoir pris autant de temps pour te répondre.  o:)  

     

    Je t'ai fait un petit schéma de ce que j'aimerais arriver à  faire.

     

    Je te remercie par avance pour ton retour.  ;)


    ihm.png 13.4K
  • Joanna CarterJoanna Carter Membre, Modérateur
    décembre 2016 modifié #10

    Un peu comme ci ?


     


    C'est seulement pour iPad ou iPhone aussi ?


  • Oui et non. Oui car effectivement tu dois faire apparaà®tre un nouvel élément sur la gauche de ta UIView mais les deux blocs doivent êtres aux mêmes dimensions.  :)


     


    Mais dans l'esprit c'est ce que j'aimerais faire.  :)


  • Joanna CarterJoanna Carter Membre, Modérateur
    décembre 2016 modifié #12
    C'est possible de varier les proportions entre les deux parties. J'ai utilisé un UISplitViewController comme dans le template de projet master/detail.


    Mais, je répète ma question - tu prévois l'app pour l'iPad ou l'iPhone aussi?


    Est ce que tu veux qu la partie gauche s'affiche sur la partie droite en mode portrait, en tappant sur un bouton ?
  • JérémyJérémy Membre
    décembre 2016 modifié #13

    Oooooops j'ai zappé ta question.


     




    Mais, je répète ma question - tu prévois l'app pour l'iPad ou l'iPhone aussi?




     


    Uniquement sur iPhone.


     


     




    Est ce que tu veux qu la partie gauche s'affiche sur la partie droite en mode portrait, en tappant sur un bouton ?




     


    En mode portrait, la partie de gauche (UIView B ) ne sera pas proposé alors qu'elle sera "imposé" en mode paysage.


  • Joanna CarterJoanna Carter Membre, Modérateur
    Mais, en mode portrait, comment accéder UIView B ?
  • Les informations présentes dans la vue UIView B sont secondaires, elles enrichissent les infos principales qui se situent dans la UIView A. C'est un peu comme une cerise sur un gâteau, ça le rend plus attrayant mais ce n'est pas indispensable.  ;)




  • Les informations présentes dans la vue UIView B sont secondaires, elles enrichissent les infos principales qui se situent dans la UIView A. C'est un peu comme une cerise sur un gâteau, ça le rend plus attrayant mais ce n'est pas indispensable.  ;)




    C'est un peu surprenant comme mode de fonctionnement.



  • C'est un peu surprenant comme mode de fonctionnement.




     


    C'est un comme l'app santé. Quand tu es en mode portrait, tu as les datas et quand tu passes en paysage tu as un graphique. Ce que je veux faire c'est ni plus ni moins la même chose.  ;)

  • Joanna CarterJoanna Carter Membre, Modérateur

    Bien que l'app provienne d'Apple, c'est pas vraiment une bonne idée d'avoir un comportement que l'on manque dans une des orientations.


  • Je souhaite juste afficher (grosso modo) une horloge digitale dans la partie de gauche alors que les valeurs numériques seront à  droite. Franchement on ne perd pas grand chose...  :)


  • Joanna CarterJoanna Carter Membre, Modérateur

    Je ne veux pas t'embêter mais - pourquoi ?


  • Pour rendre l'app plus attryante 


     




    C'est un peu comme une cerise sur un gâteau, ça le rend plus attrayant mais ce n'est pas indispensable.  ;)




     


    Pour rendre l'app plus attrayante.  ^_^


  • Joanna CarterJoanna Carter Membre, Modérateur

    Et, si les utilisateurs ne tournent jamais leurs iPhones du mode portrait ?




  • Et, si les utilisateurs ne tournent jamais leurs iPhones du mode portrait ?




     


    Ce n'est pas grave. 

  • Joanna CarterJoanna Carter Membre, Modérateur

    Un des principes très importants, c'est le "discoverability". Il ne sert à  rien de faire les fonctionnalités que personne ne puisse pas trouver.


     


    Pourquoi pas avoir un bouton sur la UIView A (en mode portrait), qui découvre la UIView B ?


     


    Sur un iPad, on pourrait utiliser le UISplitViewController mais, pour l'iPhone il te faudrait manipuler les contraintes toi-même; mais, quand même, c'est possible.



  • Pourquoi pas avoir un bouton sur la UIView A (en mode portrait), qui découvre la UIView B ?




     


    Ca n'apporte pas grand chose.  :)


     




    Sur un iPad, on pourrait utiliser le UISplitViewController mais, pour l'iPhone il te faudrait manipuler les contraintes toi-même; mais, quand même, c'est possible.




     


    D'accord.  :)

Connectez-vous ou Inscrivez-vous pour répondre.