2015-11-27 1 views
0

Je tente de masquer mon tabBar lorsque je le pousse vers un nouveau viewController. J'y parviens en cochant la case Bottom Bar sur Pushboard storyboard. Le problème est que la nouvelle vue qui est poussé à momentanément montre sa position d'origine (comme si le tabBar était toujours là) avant de se déplacer vers le bas à la bonne position.Afficher les décalages vers le bas après avoir été présenté à l'écran lors du masquage tabBar dans une pile de navigationController dans iOS

Après avoir cherché pendant un certain temps, j'ai trouvé un poste similaire: Auto Layout and "Hide bottom bar when pushed"

Malheureusement, la solution de sélectionner la contrainte de fond de la nouvelle vue de la mise en page de Guide.Bottom Bas est plus disponible dans 9 iOS (il est grisés en dehors). J'ai suivi plusieurs suggestions pour définir la contrainte inférieure à la marge du conteneur, mais cela n'a pas aidé ce déplacement vers le bas.

Est-ce que quelqu'un a trouvé une solution à ce problème? Il semble que la géométrie de masquage de tabBarController n'est reconnue qu'après la fin de la transition push.

+0

cacher la barre d'onglets sur viewDidLoad de classe poussé – Jaimish

+0

j'ai essayé en ajoutant self.tabBarController! .tabBar.hidden = true sur le viewController poussé dans viewDidLoad. La même chose arrive. – alionthego

+0

Bien dans iOS 9 avec XCode il y a un moyen de régler la mise en page du bas. Je vais poster une solution liée à cela. – Hanny

Répondre

1

Dans Xcode7, vous devez cliquer avec le bouton droit sur votre élément, tracez une ligne vers le bas jusqu'à ce que le sélecteur de contrainte apparaisse. Sélecteur Constraint

enter image description here

Ensuite, appuyez sur ALT et maintenant que vous obtiendrez la contrainte de fond souhaitée

enter image description here

+0

Oui, je suis tombé sur ceci aussi et l'ai essayé mais ça ne marche pas aussi. Je peux encore voir la vue se déplacer vers le bas. Ce que vous faites peut également être réalisé en utilisant l'outil de broche au bas du storyboard et en sélectionnant la flèche déroulante à côté de la contrainte de broche inférieure. Pourtant, je peux voir la vue sauter après la transition de vue est terminée. Auparavant en sélectionnant Bottom Layout Guide.Bottom je n'ai pas eu de problèmes. Utiliser votre solution et utiliser le fond du conteneur ne fonctionne pas pour moi. – alionthego

+0

En fait, je viens de ralentir l'animation et ce qui est différent maintenant en utilisant votre solution, c'est que collectionView qui est présenté dans le viewController poussé défile quand il apparaît plutôt que de défiler déjà vers le bas. Le parchemin est visible maintenant que je ne veux pas. – alionthego

+0

donc pour être clair, si je règle la contrainte de fond au guide de mise en page du bas, la vue apparaît déjà défilée et parfaitement correcte sauf qu'elle se décale après la fin de la transition. Si je change juste la contrainte du bas au fond du récipient comme vous le suggérez, le défilement de vue se produit pendant la transition de viewController d'une manière visible. – alionthego

2

Il se trouve mon inputAccessoryView était à l'origine du comportement de défilement bizarre. La solution qui a fonctionné pour moi était d'ajouter view.layoutIfNeeded() juste avant de retourner le accessoryView dans la commande prioritaire:

override var inputAccessoryView: UIView? { 
    get { 
     view.layoutIfNeeded() 
     return accessoryView 
    } 

Donc, pour ce cas particulier qui implique un NavigationController embarqué dans un tabBarController où vous voulez pousser un viewController qui cache la tabBar:

  1. check Cacher la barre de bas push sur la broche storyboard

  2. bas de la vue que vous présentez au fond du récipient (méthode d'utilisation suggérée ci-dessus ou j uste sélectionnez l'icône de l'axe en bas de votre écran et sur la contrainte inférieure, sélectionnez le menu déroulant flèche et la broche pour voir)

  3. Puis, finalement, si vous utilisez un inputAccessoryView, ajoutez layoutIfNeeded() dans la dérogation au getter comme je l'ai fait ci-dessus.