Redimensionner à l'appel de la barre de statut?
Comment puis-je faire de mon point de vue, la redimensionner en réponse à l'appel de la barre de statut de ma plume?
J'ai pensé qu'il serait juste de réglage de la redimensionner propriétés, mais ils ne sont pas activés pour la racine UIView.
(Je pense que mon principal problème ici est que je ne sais pas ce que tout cela est appelé à le faire, je ne trouve pas de référence à l'appel de la barre de statut dans la documentation, sauf lorsqu'il parle de ce simulateur commande de menu.)
InformationsquelleAutor Steven Fisher | 2009-07-11
Vous devez vous connecter pour publier un commentaire.
Que voulez-vous dire quand vous dites que "le redimensionner les propriétés ne sont pas activés pour la racine UIView'?
L'appel de la barre de statut n'a pas tout particulier désignation spéciale, et je ne pense pas que les Api de notifications ou autour de lui. Au lieu de cela, vos points de vue doivent simplement être mis en place pour autoresize correctement.
Essayez de créer une nouvelle navigation application basée dans Xcode et l'étude de la autoresize paramètres sur l'affichage de la table dans RootViewController.xib. J'espère que vous verrez un delta entre ce qu'Apple a du jeu et ce que vous avez mis dans votre projet.
UIApplicationWillChangeStatusBarFrameNotification
. Et même avec mise en page automatique correctement le programme d'installation, vous devrez peut-être répondre à l'image du changement. Par exemple, un affichage de tableau qui calcule sa cellule de la hauteur en fonction de l'espace dans l'écran aurait peut-être besoin dereloadData
après la barre de statut a changé.iOS appelle votre viewController de viewWillLayoutSubviews méthode à chaque fois qu'il y a un changement dans la barre d'état. Vous pouvez remplacer et ajuster votre sous-vues selon les nouvelles limites.
viewWillLayoutSubviews
sera de nouveau appelée récursivement.Vous êtes à la recherche pour -[UIApplication statusBarFrame] et, dans votre UIApplicationDelegate, vous devez mettre en œuvre cette méthode du délégué être notifié de la barre d'état de l'image est modifié:
Vue ne peut pas redimensionner automatiquement avec barre d'état les changements de taille si vous n'avez pas une vue de la racine de contrôleur de jeu. Au départ, j'avais dans mon délégué d'application, et mon application a fonctionné correctement à tous les égards, sauf qu'il ne serait pas redimensionner correctement pendant les appels téléphoniques.
J'ai changé la ligne ci-dessus pour cela, et maintenant mon application redimensionne automatiquement pendant les appels.
J'ai découvert ce correctif après avoir vu dans le journal et l'examen de la cause.
cela fonctionne parfaitement pour moi lors de ma demande est en cours d'exécution en arrière-plan et j'appuyez sur commande + T. Dans mon scénario , la racine contrôleur est mon tab bar controller et je suis réajuster mon nav contrôleur à l'intérieur de chaque onglet.
}
Pour les vues comme UITableView vous aurez généralement besoin de modifier le tableau de la hauteur de la cellule, et il n'y a pas d'autre moyen de le faire, sauf à mettre en œuvre application:didChangeStatusBarFrame:. Mais c'est pas trop grave, et vous peut définir la hauteur de ligne pour les valeurs non entières si vous en avez besoin.
La notification pour la barre d'état changement de cadre est
UIApplicationWillChangeStatusBarFrameNotification
S'inscrire en tant qu'observateur:
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(statusBarFrameWillChange:)name:UIApplicationWillChangeStatusBarFrameNotification object:nil];
Puis de répondre aux changements dans votre gestionnaire de:
- (void)statusBarFrameWillChange:(NSNotification*)notification
{
//respond to changes
}
Même avec mise en page automatique de l'installation correctement, vous devrez peut-être répondre aux changements. Par exemple, un affichage de tableau qui calcule sa cellule de la hauteur en fonction de l'espace dans l'écran aurait peut-être besoin de
reloadData
après la barre de statut a changé.La Documentation
J'ai eu le même problème. Ce que j'ai fait cette.
J'espère avoir été clair.
Vous devez mettre à jour les vues manuellement si vous définissez votre point de vue images par programmation
Cela vous donne de la hauteur de la barre d'état et en l'utilisant, vous pouvez mettre à jour vos images en conséquence.
La solution est de vous assurer que vous avez fait votre fenêtre clé:
Si vous ne faites pas que la sous-vue n'est pas redimensionnée automatiquement, mais il n'y a pas d'autres symptômes autant que je sache.
Aucune des solutions posté avant fonctionné pour moi. Ce qui a fonctionné pour moi était que je n'avais pas mes contraintes configuré correctement pour mon point de vue. Dans ma situation, j'ai eu deux autre conteneur de vues au sein de mon point de vue.
Le bas (dans la liste) contenant un
UITableView
, ce qui n'était pas le défilement correctement vers le bas de la table. La raison en était que le décalage de l'appel de la barre de statut a été l'origine de l'origine (en haut à gauche) de laUITableView
à changer, mais la taille reste cette même. Cela signifie que le fond de la table a été hors de l'écran!La solution a été de définir correctement le d'un redimensionnement automatique hauteur contrainte correctement. Dans la capture d'écran ci-dessous, c'est les flèches verticales dans le milieu de la d'un redimensionnement automatique boîte.