J'ai un ViewController
qui est à l'intérieur de a UINavigationcontroller
, mais la barre de navigation est cachée. Lorsque j'exécute l'application sur iOS 7, la barre d'état s'affiche en haut de ma vue. Y a-t-il un moyen d'éviter cela?
Je ne veux pas écrire de code spécifique au système d'exploitation.
Je mise essayé View controller-based status bar appearance
de NO
, mais il n'a pas résolu la question.
Réponses:
Xcode 5
iOS 6/7 Deltas
est spécialement conçu pour résoudre ce problème. Dans le storyboard, j'ai déplacé mes vues de 20 pixels vers le bas pour avoir l'air droit sur iOS 7 et afin de le rendre compatible avec iOS 6, je suis passéDelta y
à -20.Depuis mon story - board n'utilise la configuration automatique, afin de redimensionner la hauteur des vues correctement sur iOS 6 je devais mettre
Delta height
ainsi queDelta Y
.la source
Si vous ne voulez tout simplement PAS de barre d'état, vous devez mettre à jour votre plist avec ces données: Pour ce faire, dans le plist, ajoutez ces 2 paramètres:
Dans iOS 7, vous devez concevoir votre application en gardant à l'esprit une barre d'état transparente superposée. Voir la nouvelle application Météo iOS 7 par exemple.
la source
Il s'agit du comportement par défaut pour
UIViewController
iOS 7. La vue sera en plein écran, ce qui signifie que la barre d'état couvrira le haut de votre vue.Si vous avez un
UIViewController
dans unUINavigationController
et que navigationBar est visible, vous pouvez avoir le code suivant dans votreviewDidLoad
ou avoir une image d'arrière-plan pour navigationBar faire l'affaire.Si navigationBar est masqué, vous devez ajuster tous les éléments UIView en décalant de 20 points. Je ne vois aucune autre solution. Utiliser la mise en page automatique aidera un peu.
Voici l'exemple de code pour détecter la version iOS, si vous souhaitez une compatibilité descendante.
la source
if ([self respondsToSelector:@selector(edgesForExtendedLayout)])
La seule solution de travail que j'ai faite par moi-même.
Voici ma sous-classe UIViewController https://github.com/comonitos/ios7_overlaping
1 Sous-classe de UIViewController
2 Sous-classez votre window.rootViewController de cette classe.
3 Voila!
4 Ajoutez ceci pour rendre votre barre d'état blanche Juste après [self.window makeKeyAndVisible]; !!!
la source
Ajouter une clé dans plist --- Afficher l'apparence de la barre d'état basée sur le contrôleur: NON
la source
Pour masquer la barre d'état dans ios7, procédez comme suit:
Dans Xcode, allez dans le
Resources
dossier " " et ouvrez "(app name)-Info.plist file
".View controller based status bar appearance
clé " " et définir sa valeur "NO
"Status bar is initially hidden
clé " " et définir sa valeur "YES
"Si les clés ne sont pas là, vous pouvez l'ajouter en sélectionnant "
information property list
" en haut et en cliquant sur + icônela source
Si vous souhaitez le cacher complètement et éviter de vous en occuper, cela fonctionne bien.
référence https://stackoverflow.com/a/18873777/1030449
la source
Si vous utilisez
xib
s, une implémentation très simple consiste à encapsuler toutes les sous-vues dans une vue de conteneur avec des indicateurs de redimensionnement (que vous utiliserez déjà pour la compatibilité 3,5 "et 4") afin que la hiérarchie des vues ressemble à cecipuis
viewDidLoad
, faites quelque chose comme ceci:De cette façon, les pointes n'ont pas besoin d'être modifiées pour la compatibilité iOS 7. Si vous avez un arrière-plan, il peut être conservé à l'extérieur
containerView
et le laisser couvrir tout l'écran.la source
C'est tout ce qui est nécessaire pour supprimer la barre d'état.
la source
Pour la barre de navigation:
Écrire ce code:
vient de faire l'affaire pour moi.
la source
La réponse de Vincent edgeForExtendedLayout a fonctionné pour moi.
Ces macros aident à déterminer la version du système d'exploitation, ce qui facilite les choses
ajoutez ces macros au fichier prefix.pch de votre projet et peut être consulté n'importe où
la source
J'ai posté ma réponse à un autre message avec la même question avec celui-ci.
À partir du guide de transition Apple iOS7, https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/TransitionGuide/AppearanceCustomization.html#//apple_ref/doc/uid/TP40013174-CH15-SW1
Plus précisément
automaticallyAdjustsScrollViewInsets=YES
etset self.edgesForExtendedLayout = UIRectEdgeNone
fonctionne pour moi quand je ne veux pas le chevauchement et que j'ai untableviewcontroller
.la source
Si vous voulez que "Use Autolayout" soit activé à tout prix, placez le code suivant dans viewdidload.
la source
Ma barre d'état et ma barre de navigation se chevauchent après le retour de la vue paysage de YTPlayer. Voici ma solution après avoir essayé la version de @comonitos mais ne fonctionne pas sur mon iOS 8
Appelez simplement cette fonction chaque fois que vous souhaitez fixer la position de la barre de navigation. J'ai appelé YTPlayerViewDelegate
playerView:didChangeToState:
la source