iOS 11 iPhone simulator X UITabBar des icônes et des titres en cours de rendu sur le dessus couvrant eachother
Toute personne ayant des problème avec l'iPhone simulator X autour de la UITabBar composant?
Mine semblent être rendu les icônes et le titre de l'un sur l'autre, je ne suis pas sûr si je suis absent quelque chose, j'ai aussi couru dans l'iPhone 8 simulateur, et une réelle périphériques où il semble bien, comme indiqué sur le story-board.
iPhone X:
iPhone 8
- Mon problème semblable: l'indicateur de sélection d'affichage de l'image enfonce dans la tabBar vue sur 16 points dans iPhone X.
- FYI - ce n'est malheureusement pas résolu dans Xcode beta 9.2
- C'est un uikit bug qui existe toujours. Les contraintes doivent être mis en place juste à droite. Voir ma réponse ci-dessous!
- J'ai eu des problèmes comme ça Cochez cette réponse stackoverflow.com/a/53524635/5441253
InformationsquelleAutor adrian chen | 2017-09-14
Vous devez vous connecter pour publier un commentaire.
J'ai pu contourner le problème en appelant simplement invalidateIntrinsicContentSize sur le UITabBar dans viewDidLayoutSubviews.
Remarque: Le fond de la barre d'onglet devra être contenu vers le bas de la vue principale, plutôt que de la zone de sécurité, et la barre d'onglet ne devrait avoir aucun hauteur de contrainte.
[self.view layoutIfNeeded]
.landscapeImage
propriété de l'onglet bouton de la barre. Tailles recommandées sont dans [Apple HIG s] (developer.apple.com/design/human-interface-guidelines/ios/...) en vertu de Icône Personnalisée TailleRéponse fournie par VoidLess correctifs TabBar problèmes que partiellement. Il corrige les problèmes de mise en page à l'intérieur de la tabbar, mais si vous utilisez viewcontroller qui cache la tabbar, la tabbar est rendu de manière incorrecte lors des animations (à reproduire, il est préférable 2 ont 2 enchaîne un modal et une pression. Si vous alternez les enchaîne, vous pouvez voir la tabbar rendu de celui-ci). Le code soufflet résout ces deux problèmes. Bon travail d'apple.
Code Objective-C:
Il y a un truc qui nous permet de résoudre le problème.
C'est vraiment de travailler pour moi.
Ou vous pouvez suivre ce Lien pour plus de détails.
remplacer
UITabBar
sizeThatFits(_)
pour safeAreaJ'ai ajouté ceci à
viewWillAppear
de ma coutumeUITabBarController
, parce qu'aucune des réponses a fonctionné pour moi:Le déplacement de la barre d'onglet à 1 point de la bas a fonctionné pour moi.
Bien sûr, vous aurez une lacune en faisant de sorte que vous devrez remplir, en quelque sorte, mais le texte/les icones sont maintenant correctement positionné.
J'ai eu le même problème.
Si j'ai mis toute non-constante de zéro sur le UITabBar de fond de la contrainte de la zone de sécurité:
Il commence à travailler comme prévu...
C'est le seul changement que j'ai fait et je n'ai aucune idée de pourquoi cela fonctionne, mais si personne ne se que j'aimerais savoir.
Corrigées à l'aide des sous-classé UITabBar à appliquer safeAreaInsets:
Aha! C'est en fait de la magie!
J'ai enfin compris cela après des heures de la malédiction d'Apple.
UIKit en fait de gérer cela pour vous, et il semble que la nouvelle barre d'onglet éléments sont dus à une erreur de configuration (et probablement une réelle UIKit bug). Il n'y a pas besoin de sous-classement ou un arrière-plan de la vue.
UITabBar "fonctionnera" s'il est contraint à l'superview du bas, PAS vers le bas de la zone de sécurité.
Il fonctionne même dans Interface builder.
Correct De L'Installation
Parfois cela ne fonctionne toujours pas
Ce qui est vraiment stupide, c'est que vous pouvez actaully voir le bug de l'IB ainsi, même si vous ajoutez des contraintes que l'IB ajoute dans les étapes ci-dessus!
Bizarrement, cela permettra de fixer lui-même si vous faites un "Inverse Premier Et le Deuxième Élément" dans la contrainte inspecteur pour le bas de la contrainte. _(ツ)_/
Résolu pour moi en appelant
[tabController.view setNeedsLayout];
après avoir rejeté l'modale dans la réalisation du bloc.La UITabBar est de plus en hauteur au-dessus du bouton home/ligne, mais le dessin de la sous-vue à son emplacement d'origine et en y ajoutant la UITabBarItem sur la sous-vue.
Comme une solution de contournement, vous pouvez détecter l'iPhone X, puis réduire la hauteur de la vue par 32px pour assurer la barre d'onglet est affiché dans la zone de sécurité au-dessus de la maison de ligne.
Par exemple, si vous créez votre TabBar par programmation remplacer
Avec ceci:
NOTE: Ceci pourrait bien être un bug, car la vue de tailles et de barre d'onglet mise en page sont définies par le système d'exploitation. Il devrait probablement s'afficher comme par Apple capture d'écran de l'iPhone X Human Interface Guidelines ici: https://developer.apple.com/ios/human-interface-guidelines/overview/iphone-x/
Mon cas était que j'avais mis une coutume UITabBar hauteur dans mon UITabBarController, comme ceci:
La suppression de ce code a été la solution pour la TabBar pour s'afficher correctement sur iPhone X.
J'ai eu le même problème quand j'ai essayé de définir le cadre de UITabBar dans mon custom TabBarController.
Quand j'ai juste ajusté à la nouvelle taille du problème s'en alla
kPhoneXTabBarHeight
?J'ai rencontré aujourd'hui avec un UITabBar ajoutés manuellement à la vue-contrôleur dans le storyboard, lorsque l'alignement vers le bas de la zone de sécurité avec une constante de 0, je voudrais obtenir de la question, mais de la modifier à 1 permettrait de résoudre le problème. Avoir la UITabBar 1 pixel de plus que la normale était acceptable pour mon application.
J'ai rayé ma tête sur ce problème. Il semble être liée à la façon dont la tabBar est initialisé et ajouté à la vue de la hiérarchie. J'ai aussi essayé les solutions ci-dessus comme appeler
invalidateIntrinsicContentSize
, le cadre, et aussibottomInsets
à l'intérieur d'un UITabBar sous-classe. Ils semblent toutefois temporairement et ils cassent quelque autre scénario ou la régression de la barre d'onglet à l'origine de certaines ambigu problème de mise en page. Quand j'étais à déboguer le problème, j'ai essayé de l'affectation de la hauteur de contraintes à la UITabBar et centerYAnchor, cependant pas résolu le problème. J'ai réalisé en vue débogueur que la tabBar hauteur est correcte avant et après le problème reproduit, ce qui m'a amené à penser que le problème était dans le sous-vues. J'ai utilisé le code ci-dessous pour réussir à résoudre ce problème sans régresser tout autre scénario.Hypothèses: je fais cela uniquement pour l'iPhone X, car il ne semble pas reproduire sur un autre appareil pour le moment.
Est basée sur l'hypothèse qu'Apple ne change pas le nom de la UITabBarButton classe dans les futures versions du logiciel iOS.
Nous faisons cela sur UITabBarButton seulement lorsque les moyens si apple ajoute plus interne des sous-vues à UITabBar nous pourrions avoir besoin de modifier le code afin de l'ajuster pour qu'.
Veuillez crois-moi savoir si cela fonctionne, sera ouvert aux suggestions et améliorations!
Il doit être simple pour créer rapidement un équivalent de cette.
viewDidAppear(animated:)
dans monUITabBarController
et il a bien fonctionné. Merci!De ce tutoriel:
https://github.com/eggswift/ESTabBarController
et après l'initialisation de la barre d'onglet rédaction de cette ligne dans appdelegate classe
Résout mon problème de barre d'onglet.
Espère que son résout votre problème
Grâce
Sélectionnez tabbar et "Enregistrer la Zone de Relative Marginalité" case à cocher dans l'Inspecteur de l'Éditeur comme ceci:
Si vous avez n'importe quelle hauteur de contrainte pour la Barre d'Onglet essayez de le retirer .
Face au même problème et supprimer ce a résolu le problème.
J'ai créé de nouveaux UITabBarController dans mon storyboard et poussé tous les contrôleurs de vue de cette nouvelle UITabBarConttoller. Donc, tous fonctionnent bien dans l'iPhone X simulateur.
Pour iPhone, vous pouvez le faire, la sous-classe UITabBarController.
Goto Storyboard et permettre Utilisation de la Zone de Sécurité Guide de Présentation de l' et de changement de catégorie de UITabbarController à MyTabBarController
P. S Cette solution n'est pas testé dans le cas de l'application et de l'iPad.
essayer de changer l'écran de démarrage avec @3x la taille de l'est (3726 × 6624)
Pour moi, supprimer
[self.tabBar setBackgroundImage:]
travail, c'est peut-être UIKit bugPour moi, c'fixe toutes les questions:
J'ai eu le même problème au début, il a été rendu correctement, mais après la mise en place
badgeValue
sur l'un des tabBarItem il a brisé la mise en page.Ce qu'il a travaillé pour moi sans sous-classement
UITabBar
, c'est sur mon déjà crééUITabBarController
sous-classe.J'ai utilisé tabBar superview pour s'assurer que les contraintes et les ancres sont sur le même point de vue de la hiérarchie et à éviter les collisions.
Basé sur ma compréhension, puisque cela semble être un UIKit bug, nous avons juste besoin de réécrire/re-paramétrer l'onglet barre des contraintes de la mise en page automatique au moteur de mise en page de la barre d'onglet à nouveau correctement.
La solution la plus simple que j'ai trouvé était de simplement ajouter 0,2 pt espace entre le bas de la barre d'onglet et le bas de la safeAreaLayoutGuide.bottomAnchor comme si.
J'ai eu le même problème qui a été résolu en définissant les éléments de la tabBar après la barre d'onglet a été aménagé.
Dans mon cas, la question qui s'est passé lors de l':
Je pense que c'est un bug UIKit de iPhoneX.
parce que cela fonctionne:
Je crois que vous pourriez être à la pose de la barre d'onglet en contre bas sécuritaire guide de présentation de l'. Ce n'est probablement pas ce que vous voulez depuis l'onglet barre ne semble faire ses propres calculs de position de l'onglet éléments de la barre en toute sécurité sur le dessus de la maison de la ligne de l'iPhone X. Installation de votre fond de contrainte à l'encontre de la superview bas. Vous devez voir qu'il expose correctement sur iPhone X ainsi que d'autres iPhones.
Je suis tombé sur ce bug sur mon écran de lancement de storyboard, qui ne peuvent pas être personnalisés par le biais de sous-classement. Après quelques analyses, j'ai réussi à trouver la cause du problème - j'ai été en utilisant un
UITabBar
directement. Le passage à uneUITabBarController
, qui encapsule uneUITabBar
, a résolu le problème.Remarque - il est possible que cela sera corrigé par iOS 11.1, ne peuvent donc pas d'effet réel X des applications iPhone (car il est probable que l'iPhone X sera publié iOS 11.1).