Status Bar

al33eral33er Membre
15:24 modifié dans API UIKit #1
Bonjour,

Je lance un application sans status bar via le paramètre coché qui va bien dans le info.plist. (UIStatusBarHidden).

J'ai un souci. Quand je fait un push modal d'une nouvelle view (définie dans IB), la taille de la nouvelle ne couvre pas tout l'écran. Il reste la taille de la status bar en bas.

Avez-vous une solution s'il vous plaà®t ?

Alexandre.

Réponses

  • Philippe49Philippe49 Membre
    15:24 modifié #2
    Voila un essai qui fonctionne sans problème.
    Si tu n'en dis pas plus cela va être difficile de voir ...
  • al33eral33er Membre
    15:24 modifié #3
    Merci Philippe

    Effectivement. Je vais chercher ce que j'ai pu changer.

    Alexandre.
  • al33eral33er Membre
    15:24 modifié #4
    Ci joint une copie d'écran. On a l'impression que la barre en bas est en incrustation. La tableview en dessous passe en dessous de cette barre.

    Alexandre.
  • al33eral33er Membre
    15:24 modifié #5
    ça y est j'ai trouvé. Désolé pour le dérangement.
    En fait, il ne faut pas mettre de statusbar dans les view appeler par presentmodalviewControler et augmenter la hauteur de la vue de 20.
    Merci à  toi Philippe pour ton exemple.

    Alexandre.
  • GreensourceGreensource Membre
    15:24 modifié #6
    Je up ce sujet car j'ai un problème un peu en rapport. Je n'avais pas bien fait attention avant mais dans mon appli je n'arrive pas à  faire disparaà®tre la statusBar! J'ai pourtant bien mis "none" dans IB, elle est bien disparue mais pourtant quand je lance le simulateur elle apparait! Ce qui est super bizarre c'est que dans ton exemple Philippe toi tu n'as pas enlever la statusBar dans IB et pourtant elle disparaà®t bien dans le simulateur!  :o
    Je comprends vraiment pas...
  • Philippe49Philippe49 Membre
    15:24 modifié #7
    UIApplication * app=[UIApplication sharedApplication];
    app.statusBarHidden=YES;

    ou bien dans le plist
  • AliGatorAliGator Membre, Modérateur
    15:24 modifié #8
    Note aussi que le réglage "StatusBar" d'une vue dans IB n'est qu'un réglage informel, de même que la TopBar et la BottomBar.
    D'ailleurs ces réglages dans IB sont bien dans la section nommée "View simulated bar metrics" : ils n'ont pour but que de te donner une idée de la taille de ta vue quand elle sera affichée, dans le cas où elle a une statusbar, une navigation bar et/ou une tabbar, pour créer ton interface en fonction de l'espace disponible qu'il te reste. Mais ça n'a aucun impact sur la présence réelle ou non de cette statusbar, navbar ou tabbar en réalité.
  • GreensourceGreensource Membre
    15:24 modifié #9
    Aaaaah ok! Et bien j'aurais eu du mal à  trouver ça tout seul, merci! Je pensais vraiment d'IB réglais lui même tout ça!
  • muqaddarmuqaddar Administrateur
    15:24 modifié #10
    Je up aussi ce sujet.

    J'ai un problème similaire.
    j'ai vérifié tous mes NIB pour "simuler les metrics"...

    Il a 20 pixels de fonb blanc qui traà®nent. Je ne vois pas d'où ils sortent.

    Mon TopicsViewController charge la vue du navigationController.

    Si je passe le hiddenStatusBar à  YES, je suis bon, j'ai bien ma statusBar qui disparaà®t, mais à  NO, j'ai donc la statusBar et cette bande blanche de 20 pixels...

    Quelle vue peut avoir besoin de 20 pixels de plus ? ça sent la bidouille cette histoire...
  • AliGatorAliGator Membre, Modérateur
    avril 2009 modifié #11
    Ca sent surtout la confusion entre bounds et frame...
    Ta vue principale doit normalement avoir un frame qui a son origine en (0,0). Statusbar ou pas (l'iPhone se charge de recaler ta vue s'il y a une statusBar, c'est pas à  toi de calculer le décalage de 20 pixels si elle est présente bien sûr, encore heureux).

    Ca peut aussi venir d'un mauvais autoresizingMask, tu aurais fait le design de ta vue dans IB avec une StatusBar affichée pour les simulatedMetrics, mais n'aurait pas laissé le autoresizingMask par défaut (ou alors tu as créé ta vue par code et a oublié d'affecter l'autoresizingMask)... ce qui fait que ta vue ne s'autoredimentionne pas toute seule quand tu changes de la statusBar visible à  non visible...


    [EDIT]Ton souci des 20 pixels est dû au fait que tu ajoutes navigationController.view en subView de ta vue de TopicsView.
    Comme la frame de ton navigationController.view est (0,20,320,460) car elle a été calculée pour être positionnée en tant que vue complète de ton écran (donc les 20 pixels de l'origine en Y ont été calculés par l'iPhone pour que ta vue soit bien sous la statusBar)... Si toi tu l'ajoutes en subView de ta TopicsView, qui a déjà  ces 20 pixels de décalage... ça les rajoute.

    Donc le truc c'est que tu as TopicsViewController.view dont la frame comment à  y=20, et DANS cette view tu rajoutes en subview navigationController.view dont la frame elle aussi commence à  Y=20.
    Comme, pour rappel, la frame correspond aux coordonnées de placement de ta view dans sa superView, navigationController.view va être placé 20 pixels en dessous du haut de TopicsViewController.view... qui lui est déjà  placé 20 pixels sous le haut de l'écran.
    D'ailleurs si tu mets un fond genre bleu à  cette UIView dans IB et que tu relances ton appli, tu verras que les 20px en haut sont... bleus ;-)

    ---> La solution est donc de ne pas ajouter navigationController.view en subView de self.view dans TopicsViewController.h, mais de remplacer la view par celle de ton navigationController. Là  la frame de ce dernier sera toujours de 20 en origin.y... mais ce sera par rapport à  sa superview parente... qui sera l'écran, et non plus ta topicsViewController.view intermédiaire (celle qui contient le label "SecondView" en gros au milieu là ). view intermédiaire qui ne sert à  rien d'ailleurs, enfin à  rien d'autre qu'un "placeholder" pour être remplacé par la vue de ton navigationController en fait.

    - (void)viewDidLoad {<br />	[super viewDidLoad];<br />	//[self.view addSubview:navigationController.view];<br />	self.view = navigationController.view;<br />}
    

  • AliGatorAliGator Membre, Modérateur
    15:24 modifié #12
    Wah comment il m'a édité mon post le croonermac, juste pour y rajouter la réponse que je lui ai fait par mail :P
    J'écris sur les forums sans le savoir maintenant, c'est fort :D
  • muqaddarmuqaddar Administrateur
    15:24 modifié #13
    dans 1240067333:

    Wah comment il m'a édité mon post le croonermac, juste pour y rajouter la réponse que je lui ai fait par mail :P
    J'écris sur les forums sans le savoir maintenant, c'est fort :D


    C'était pour t'épargner un copier/coller. ;)
    Du coup tu réponds une phrase qui prend plus de temps que le copier/coller. Effet râté ! ;)
Connectez-vous ou Inscrivez-vous pour répondre.