Comment puis-je obtenir la largeur d'un UITabBarItem?
La largeur d'un UITabBarItem varie, en fonction de combien il y en a beaucoup.
Comment puis-je déterminer la largeur de ma barre d'onglet articles sont?
Je suis à la recherche d'une propriété, si possible, par opposition à une formule mathématique, puisque sur l'iPad, il y a aussi un problème de remplissage sur chaque côté de la barre d'onglet. Tenir compte de ces captures d'écran. Avis de la marge sur chaque côté de la barre d'onglet articles sur l'iPad (mis en évidence avec des zones rouges). Ce remplissage n'existe pas sur l'iPhone.
L'iPad:
L'iPhone:
Qu'est-ce que vous souhaitez réaliser?
J'aimerais centre une flèche au-dessus de ma barre d'onglets, à l'instar de l'application twitter.
Je tiens à ajouter que j'ai la flèche de travail sur l'iPhone. Je ne suis pas sûr de la façon de gérer rembourrage sur l'iPad.
Voir les captures d'écran s'il vous plaît. Je veux avoir l'image centrée sur l'onglet sélectionné.
Je vais regarder de plus demain, sommeil nécessaire 🙂
J'aimerais centre une flèche au-dessus de ma barre d'onglets, à l'instar de l'application twitter.
Je tiens à ajouter que j'ai la flèche de travail sur l'iPhone. Je ne suis pas sûr de la façon de gérer rembourrage sur l'iPad.
Voir les captures d'écran s'il vous plaît. Je veux avoir l'image centrée sur l'onglet sélectionné.
Je vais regarder de plus demain, sommeil nécessaire 🙂
OriginalL'auteur Moshe | 2011-04-04
Vous devez vous connecter pour publier un commentaire.
Modifier: Il a été noté dans les commentaires ci-dessous que cette solution ne fonctionne pas dans une version bêta de l'iOS 5, alors soyez prêt à modifier pour répondre à vos besoins.
Je pense que pour faire de la bonne façon, vous devez être en mesure d'obtenir à l'image de chaque onglet de l'élément de barre. Heureusement, c'est possible:
Le code ci-dessus vous donne la coordonnée y de la haut de la barre d'onglet et de la coordonnée x de la moyenne de l'onglet sélectionné l'élément. À partir de là, vous pouvez ajouter votre indicateur d'affichage de la barre d'onglets du contrôleur de vue par rapport à ce point.
Avertissement: Le danger de cette approche est qu'il jettant un oeil sous le capot de la
UITabBar
classe en accédant à son point de vue de la hiérarchie et de laframe
propriété des instances du privéUITabBarButton
classe. Il est possible (mais peu probable) que cette approche pourrait être affecté/brisée par une future mise à jour d'iOS. Cependant, vous êtes de ne pas accéder à des Api privées, donc il ne devrait pas obtenir votre application rejeté à partir de l'App Store.J'ai fait un simple iPad de projet en démontrant comment il fonctionne, complète avec animations.
I think in order to do this the right way, you have to be able to get to the frame of each tab bar item.
Je ne savais pas ce qui était possible. Je ne suis pas sûr que cela permettra d'obtenir au-delà de l'approbation. En outre, il semble y avoir plus de sous-vues de l'onglet éléments de la barre.Je ne pense pas que c'est un problème, puisque vous n'êtes pas à l'appel de toutes les méthodes privées, et je ne pense pas qu'il ya une meilleure façon d'accomplir ce que vous voulez faire. Quelqu'un d'autre sait si Apple permet ce genre de code?
Je suis à l'aide de cette dans une application. Si elle obtient par Apple, vous avez mon upvote trop.
Cela ne fonctionne pas sous iOS 5 beta 4.
OriginalL'auteur
UITabBarItem hérite de UIBarItem, qui hérite de NSObject. Car il n'héritent pas de UIView, je ne sais pas que vous allez être en mesure d'obtenir les informations que vous souhaitez seulement à une propriété. Je sais que vous ne voulez pas un moyen mathématique de le faire, mais il semble que l'obtention de l'image de la barre d'onglet et en divisant par le nombre d'onglets serait une option raisonnable qui devrait fonctionner quel que soit le support (iphone vs ipad). Rembourrage ne doit pas affecter le droit? Donc, si vous voulez avoir:
J'ai, ainsi, je suis intéressé de savoir si quelqu'un trouve une propriété simple à donner cette information.
Voir ma mise à jour de question.
les photos sont très utiles. J'ai mis à jour ma réponse compte pour le rembourrage. Je sais que ce n'est pas ce que tu voulais (c'est à dire une propriété de donner pour vous), désolé. Espérons que cela aide, cependant.
Ne fonctionne pas, l'onglet de la barre d'origine est à 0, la gauche de l'écran. Apple utilise une sorte de vue interne au centre de la languettes.
OriginalL'auteur
Regardant la réponse ci-dessus:
UITabBar
de travail différents dans l'iPhone et l'iPad. Dans l'iPhone ils ont à remplir toute la largeur, dans l'iPad, ils sont centrés horizontalement.tabBar.itemWidth
outabBar.itemSpacing
. Vous n'êtes pas en mesure de lire l'espacement ou la largeur de il - vous recevrez0
à moins que vous la définissez.Voici donc mon exemple de la façon d'obtenir des images de tous les
UITabBarItems
:Maintenant, vous avez un tableau d'images, correspondant à votre tabbar éléments. Vous pouvez par exemple. placer une imageView sur une sélection d'index image du bouton.
OriginalL'auteur
J'ai essayé ces 2 propriétés de UITabBar:
Mais obtenir la valeur zéro comme dit Vive. J'ai donc écrit quelques codes pour obtenir la bonne largeur:
Pourquoi ne pas utiliser la largeur de la première UITabBarButton? Parce qu'il y a des espaces entre les onglet de la barre de boutons. 🙂
Oui, j'ai eu zéro de la valeur par l'intermédiaire de ces 2 propriétés (UITabBar.itemWidth & UITabBar.itemSpacing). J'ai mis à jour la réponse. Merci Vive.
OriginalL'auteur
Vous pouvez obtenir tabBarItem vue à l'aide de la propriété privée
view
. Puis juste obtenir l'affichageframe
.OriginalL'auteur
Swift 3
J'ai créé une instance partagée dans UIApplication puis retiré mes sous-vues largeur
tabBarController?.tabBar.subviews[1].frame.width
OriginalL'auteur
Boucle par le biais de votre tabBar de sous-vues et de trouver les points de vue avec la classe "UITabBarButton". Ce sont les points de vue pour chaque onglet de l'élément.
OriginalL'auteur