UIImagePickerController pauses apparence de la barre de statut
Dans mon .fichier plist, j'ai " - Vue-contrôleur d'état basé sur l'apparence de la barre de" ensemble pour NO
. Mais après UIImagePickerController
, mon application se comporte comme si l'option est réglée sur YES
.
Dans mon application, je vous présente un VC qui présente un UIImagePickerController
.
Le problème se fait comme ceci:
- Après sélection de photos est présenté, à quand une photo de la bibliothèque sélectionnée, la couleur de la barre d'état de modification du texte.
- Puis des fois,
UIImagePickerController
est rejeté, la barre d'espacement
des changements pour le reste de mon application, la barre de navigation pour les autres contrôleurs s'affiche sous la barre d'état.
Est-il un moyen de résoudre ce sans gestion de la barre d'état, à mon avis, les contrôleurs?
- La réponse dans mon cas était lié à childviewcontrollers. J'ai dû recréer au lieu de les réutiliser.
- Cela semble vraiment comme un iOS 7 bug, quelqu'un a déposé un rapport avec Apple?
- stackoverflow.com/questions/21225978/... même question avec la solution la plus simple
- Jesse Taylor de la solution doit être la réponse
- Hey @AlexL, savez-vous pourquoi cela arrive?
Vous devez vous connecter pour publier un commentaire.
Aucune des solutions ci-dessus a fonctionné pour moi, mais en le combinant Rich86man et iOS_DEV_09 les réponses que j'ai en permanence une solution de travail:
et
Concernant ce génial solution. Pour 2014 /iOS8 j'ai trouvé, dans certains cas, vous devez ÉGALEMENT inclure
prefersStatusBarHidden
et, éventuellement,childViewControllerForStatusBarHidden
Donc...Espère que cela aide quelqu'un
UIImagePickerController
qui remplace-prefersStatusBarHidden
travaillé: stackoverflow.com/a/19977960/246142J'ai été confronté à ce même problème aujourd'hui. Voici ma solution.
Dans la vue contrôleur qui appelle le sélecteur d'images, mettez-vous en tant que délégué de l'image à l'aide du Sélecteur. (Vous avez probablement déjà le faire)
Depuis UIImagePickerController est un type de manette de Navigation, vous êtes également vous mettre de la UINavigationController délégué. Alors :
Remplacer UIStatusBarStyleLightContent avec n'importe quel style que vous recherchez.
Accepté la réponse ne fonctionnera que si vous avez la "Vue-contrôleur d'état basé sur l'apparence de la barre de" set à PAS dans votre .fichier plist. En effet, si vous avez besoin de contrôle de la barre d'état dans certains autre point de vue, les contrôleurs et cette option est définie sur OUI, l'autre façon de faire UIImagePickerController à se comporter correctement est en sous-classement
j'ai connu le même problème.
voici ma solution.
mis cela dans la viewWillAppear de la vue-contrôleur à partir de laquelle vous ouvrir l'image pickerview
Pouvez-vous essayer cette. Je pense que needsStatusBarApperanceUpdate fonctionne.
J'ai trouvé cela pour offrir la bonne manipulation, il y a deux parties.
la UIImagePickerController lui-même présente les contrôleurs de vue, si ce délégué fonctionne pour tous les intervenants sur la pile.
la viewWillAppear assure ce point de vue contrôleur lui-même est toujours le réinitialiser à chaque fois qu'une présentation de-vue-contrôleur rejette au-dessus d'elle.
J'ai eu le même problème.
Ajouter dans l'info plist: "- Vue-contrôleur d'état basé sur l'apparence de la barre" avec la valeur "NON"
Exemple ici https://stackoverflow.com/a/19211669
Cette solution fonctionne pour moi.
C'est probablement un bug. J'ai résolu le problème en mettant l'option "Afficher la barre de contrôle d'état basé sur l'apparence de la barre de" réglé sur " OUI " et dans chaque vue-contrôleur le coller dans le code suivant:
Puis mon application se comporte comme prévu.
Pour masquer la barre d'état dans UIImagePicker :
-
et quand UIImagePicker est rejeté pour masquer la barre d'état en Vue contrôleur utilisez le code suivant :
de l'essayer ....
cela fonctionne dans les deux cas, j'.e si vous utilisez presentModalViewController et pushViewController
délégué méthodes
Aucune des deux solutions n'a fonctionné pour moi.
Je vous présente UIImagePickerController comme modale-vue-contrôleur. Après avoir écarté UIImagePickerController la barre d'état de l'état a été:
La solution qui a résolu le problème pour moi a été la restauration de statusBarOrientation après avoir écarté UIImagePickerController:
Ce code m'a aidé à personnaliser la barre d'état de style.
EDIT: cette solution fonctionne si "- Vue-contrôleur d'état basé sur l'apparence de la barre" == OUI
Toutes les réponses ci-dessus est ok et peut vous aider.
J'ai eu le même problème d'avoir à gérer la demande est géré en vertu de différentes versions iOS.
Puis, dans un délégué:
Encore une autre solution qui peut fonctionner dans certaines situations.
Avez-vous essayé d'appeler
[self setNeedsStatusBarAppearanceUpdate]
lors de votre présentation-vue-contrôleur réapparaît?J'essaie de masquer la barre d'état dans UIImagePickerController dans iOS7, mais je ne sais toujours pas comment faire. J'utilise
dans le ViewController qui appellent la UIImagePickerController, et réglez "Afficher le contrôleur d'état basé sur l'apparence de la barre = NO" dans le fichier plist. J'espère que cela peut aider.
essayez ceci :
et dans le protocole de la mettre en œuvre, utiliser ceci:
Cela a résolu pour moi...:
Rien ici spécifiquement résolu le problème que j'ai eu (et peut-être que l'OP a été d'avoir trop), j'ai donc pensé que je voudrais partager ma réponse. Au lieu de cacher la barre d'état qui, je pense, est un buggy solution (j'ai remarqué qu'il serait parfois laisser mon application dans un état où la barre d'état était caché quand il ne devrait pas être). J'ai plutôt opté pour l'essayer et jouer gentil avec les
UIStatusBarStyles
.Lorsque le UIImagePickerController a son point de vue, je mis la barre d'état de style par défaut depuis la couleur de fond par défaut est un gris clair.
Puis, lorsque le sélecteur d'images est rejeté, je l'ai mis à l'arrière de la
UIStatusBarStyleLightContent
.Dans ce cas,Nous utilisons 2 étapes
Dans la première étape:
Ajouter dans l'info.plist: "- Vue-contrôleur d'état basé sur l'apparence de la barre" avec la valeur "NON"
Dans la Deuxième étape: Utilisez/appeler ce code avec le délégué de UIImagePickerController
Dans le cas d'IOS 7 pour ajouter Une autre Fonction
Tous les ci-dessus ne fonctionne pas pour moi. J'ai résolu le problème en changeant le style de présentation:
Comme d'iOS 8.1, il semble comme ils ont enfin corrigé ce bug! J'ai été en mesure de supprimer toutes les solutions de contournement que j'ai employé, à partir de mon code.
À l'aide de la valeur par défaut d'iOS 8 comportement j'ai eu des problèmes avec la barre d'état apparaissant lorsque j'ai voulu qu'il soit caché.
La solution que j'ai trouvé était que, directement après l'appel de
presentPopover
de mon point de vue contrôleur que j'ai fait:J'ai aussi eu de l'ajouter à mon écran principal contrôleur:
J'ai donc eu ce problème et j'ai été capable de le résoudre par la simple mise en œuvre d'une seule fonction de délégué. Le fond de ma barre d'état est noir, et ainsi de UIStatusBarStyle pour mon application .LightContent. Lorsque j'ai présenté le UIImagePickerController pour sélectionner une photo à partir de la mémoire de l'appareil, la barre d'état était très bien. Mais, en cliquant sur dans un répertoire comme "Camera Roll" ou "Favoris", reportant sur la pile de navigation, la barre d'état a disparu. Lors de la sélection d'une photo, il n'y a pas de barre d'état à tous; en rejetant une autre modal-vue-contrôleur, que la batterie était présent, en indiquant le reste de la barre d'état peut être noir.
J'ai essayé quelques autres solutions, telles que l'extension de UIImagePickerController, mais en Rapide, vous ne pouvez pas remplacer l'aide d'extensions. J'ai ensuite essayé à la sous-classe UIImagePickerController et a essayé de cacher la barre d'état sur viewWillAppear() et afficher la barre d'état sur viewWillDisappear. J'ai été en mesure de voir la barre d'état de la peau à un .L'animation de diapositives, mais depuis la barre d'état était invisible lors de la sélection d'un répertoire, je n'ai pas pu voir la barre d'état afficher. Encore une fois, le vert de la batterie revint avec le reste de la barre d'état invisible sur le congédiement d'un modal-vue-contrôleur. J'ai aussi essayé primordial prefersStatusBarHidden(), mais cette fonction n'est jamais appelée, j'ai donc essayé d'appeler setNeedsStatusBarAppearanceUpdate() pour s'assurer que prefersStatusBarHidden() est appelée par le système, mais c'est pas encore appelé. Aussi, il y a la suggestion de fixer la barre d'état pour être cachés sur la méthode du délégué navigationController willShowViewController. Encore une fois, tout cela ne fait que masquer la barre d'état, ce qui ne permet pas de résoudre le problème. Comme il s'avère, il semble que la barre d'état le style est changé après avoir poussé sur la pile de navigation de la UIImagePickerController. Pour résoudre entièrement le problème, je n'ai pas eu l'écriture d'extensions ou de la sous-classe UIImagePickerController. Tout ce que vous devez faire est de définir le délégué et le jeu de la barre d'état, le style reste le même. Cet ajout fait comme si le problème n'a jamais existé.
J'ai effectivement trouvé une meilleure façon de définir l'état du fond de la barre de couleur dans le Sélecteur d'Images. Fondamentalement, vous devez définir la backgroundImage de la navigationBar à néant, car il est par défaut dans le Sélecteur d'Images a un backgroundImage comme une Image blanche.