UINavigationController une barre de statut de l'espace dans le haut
Ce semblait assez simple quand je l'ai installé, mais je ne peux pas expliquer pourquoi cet écart est présent entre la barre d'état et la barre de navigation. Aussi, le contenu de l'affichage ressemble, il peut être aligné correctement, et c'est juste la barre de navigation qui est décalée vers le bas. L'écart représente la taille de la barre d'état, donc je m'attends a quelque chose à faire avec elle, mais je ne sais pas quoi.
Voici le code pour la configuration de la manette de navigation:
- (void)viewDidLoad
{
[super viewDidLoad];
advancedVC = [[AdvancedSearchFormVC alloc] initWithNibName:@"AdvancedSearchForm" bundle:nil];
UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:advancedVC];
nav.navigationBar.tintColor = [UIColor defaultNavBarTint];
nav.navigationBar.topItem.title = NSLocalizedString(@"SearchTitle", nil);
UIBarButtonItem *searchButton = [[UIBarButtonItem alloc] initWithTitle:NSLocalizedString(@"SearchButton", nil) style:UIBarButtonItemStylePlain target:self action:@selector(refreshPropertyList:)];
nav.navigationBar.topItem.rightBarButtonItem = searchButton;
self.view = nav.view;
}
La rootViewController utilise une vue à partir d'un fichier xib, où j'ai simulé la barre d'état, la barre de navigation et la barre d'onglet.
Notez que c'est un domaine où il existe des différences entre iOS 5 et versions antérieures. Si vous utilisez la "conserve" mise en page pour la manette de navigation, il est assez portable, mais si vous avez personnalisé à toutes les choses de sauter autour un peu entre les deux versions. (Je n'ai jamais tout à fait cloué vers le bas ce qui fait la différence, mais ce que vous faites preuve est typique pour iOS 4 du code qui tourne sur iOS 5.)
voir cette première réponse à cette question stackoverflow.com/questions/5850705/...
voir cette première réponse à cette question stackoverflow.com/questions/5850705/...
OriginalL'auteur Jim | 2012-01-15
Vous devez vous connecter pour publier un commentaire.
Le problème est en effet que la manette de navigation attend toujours laisser de la place pour la barre d'état, qui est de 20 pixels de gap. J'ai cherché un moment avant que je trouve cette solution qui fonctionne:
J'ai d'abord trouvé une réponse qui a fait de ce décalage à la navigationbar, mais il ne fonctionne pas. Il fonctionne lorsque vous le faites pour la navigation, les contrôleurs réels de vue.
J'utilise cette technique pour ajouter une manette de navigation à partir d'une autre plume à une vue vide de mon principal plume, afin que je puisse le placer n'importe où dans l'écran principal comme une sous-vue. À l'aide d'un vide vue comme un espace réservé et cadre de positionnement sur le principal de ma plume, j'ai créer une plume et de classe pour gérer la navigation, qui gère d'autres plumes utilisées pour gérer leurs écrans. De cette façon, je peux résoudre le classique "comment puis-je ajouter une bannière, une image, ou des vues personnalisées au-dessus de ma manette de navigation" tout en ayant une manette de navigation comme un sous-vue...dans iOS 5 pour être précis.
Il est également intéressant de mentionner que j'utilise le délégué d'application pour stocker et accéder à tous les autres contrôleurs, de sorte qu'ils sont retenus par une persistant de l'instance à laquelle je peux accéder à partir de n'importe quelle classe. Créer et la synthèse de certaines propriétés du délégué d'application de l'ensemble de vos contrôleurs, et dans le viewDidLoad créer des instances. De cette façon, je peut faire référence à toutes les contrôleurs utilisés dans mon application, plus tard, n'importe où, en ajoutant:
merci pour la solution! vraiment génial!
OriginalL'auteur Ali
J'ai eu le même problème avant. Le code que j'ai utilisé pour ajouter UINavigationBar de UIViewController:
Solution:
Cochez la case "se Veut Plein Écran" avec les Attributs de l'inspecteur de votre UIViewController.
OriginalL'auteur surlac
Vous pouvez essayer de définir l'attribut Sous les Barres du Haut décoché de Attributs section de UIViewController.
OriginalL'auteur aozan88
Comme nous le savons tous maintenant, le 20 pixel shift est de fournir un espace pour la barre d'État en haut de page.
Mais en fait, le point de vue des contrôleurs de système de coordonnées est maintenu en place et seule la barre de navigation image est décalée vers le bas par 20 pixels. Cela rend la barre de navigation à fait chevaucher le top 20 pixels de la vue.
De journalisation, les barres de navigation cadre d'origine, il va montrer (de 0,0 à 20,0)
Donc, la solution est tout simplement de repositionner la barre de navigation de l'origine (0.0, 0.0) dans ViewWillAppear.
OriginalL'auteur Sumit Anantwar
Puisque vous êtes en train d'ajouter
advancedVC
comme un sous-vue deself.view
, il est ajouté à l'intérieur du cadre deself.view
qui je suppose est déjà de compensation pour la barre d'état.Vous pouvez probablement facilement résoudre ce problème en ajoutant cette ligne:
Juste au-dessus de cette ligne:
-
D'Autres Pensées
Je ne suis pas au courant de l'ensemble de votre installation, mais
self.view
peut ne pas être nécessaire à tous. Il suffit de faire votreadvancedVC
exemple lerootViewController
de laUIWindow
instance contenue dans votre Délégué d'Application.OriginalL'auteur Jesse Bunch
Le problème a été résolu par la fixation de la façon la manette de navigation a été inséré. Au lieu de l'insérer dans une vue qui avait été mis sur la tabbar contrôleur, le navigaiton contrôleur doit avoir été mis directement sur la manette de navigation.
C'est juste un contrôleur qui est sur la tabbar contrôleur, en remplacement de la advancedSearchFormVC en même temps. Puis ce nav contrôleur a été ajouté à la gamme de contrôleurs qui les a mis sur la tabbar contrôleur.
Désolé pour la difficulté, mais c'est une de ces problèmes, je peux regarder directement et ne pas le voir. J'aurais vu plus tôt, parce que j'ai eu un autre nav contrôleur déjà sur la tabbar contrôleur, et il a été présenté de la même façon.
Merci pour votre aide.
OriginalL'auteur Jim
Le problème est que UINavigationController.la vue doit être ajouté à la vue de dessus.
Il suffit de trouver le haut et il sera génial de travailler.
OriginalL'auteur Evgeny Karpov