2010-10-26 8 views
5

En plus de cette question here, je suis vraiment intéressé par la création de mon propre UITabBar, et de «rouler le mien». Je suis vraiment curieux de savoir comment cela est fait, en particulier dans une application comme l'application Twitter.Comment créer mon propre UITabBar?

Comment est-ce que je peux faire ceci? Quelqu'un peut-il pointer vers de bonnes ressources sur la façon de sous-classer cela? Dois-je le faire par programmation, ou dans un XIB? Editer: Je cherche à le faire avec des icônes personnalisées/icônes sélectionnées et ayant des icônes seulement. Edit2: Après avoir lu d'autres réponses, cela ressemble à un XXTabBarcontroller personnalisé est ce que je veux vraiment faire ici. Quelqu'un peut-il commenter cela?

Merci,

Répondre

6

Je ne sais pas s'il y a une meilleure façon de faire, mais je vais partager mon expérience:

J'ai créé ma propre version d'une barre d'onglets par sous-classement UIView par opposition à UITabBar. Comme le mentionne la question liée, les classes d'interface utilisateur d'Apple sont assez pointilleuses sur leur taille et je ne pense pas que je pourrais obtenir la sous-classe UITabBar à la taille que je voulais. Comme je n'avais pas de sous-classe de UITabBar, j'ai fini par lancer mes propres versions de UITabBarController et UITabBarDelegate, avec des interfaces qui sont essentiellement les mêmes que les classes Apple. J'ai été capable d'utiliser UITabBarItem pour stocker le titre et l'icône des boutons sur la barre d'onglets, ce qui est utile car les UIViewControllers ont une propriété tabBarItem. Cela vous permet de stocker juste un tableau de UIViewControllers dans votre contrôleur, par opposition aux tableaux pour les contrôleurs et les éléments de la barre d'onglets. Comme j'utilisais principalement des classes personnalisées, je l'ai fait par programmation, y compris la création, la configuration et la disposition des boutons dans la barre d'onglets.

Comme je l'ai dit, c'est juste mon expérience, j'espère que ça aide.

+0

Merci Tim. Avez-vous un code que vous pourriez partager pour le démontrer? – barfoon

+0

Malheureusement, ma barre d'onglets et mon contrôleur associé ont un tas de comportements personnalisés que je devrais prendre en compte pour afficher le tout à titre d'exemple. Je n'ai pas le temps de le faire maintenant, mais si vous avez des questions spécifiques sur la mise en œuvre, je suis heureux de partager des extraits de code. –

+0

Comment avez-vous géré la mise à jour de votre 'UIButton's quand les propriétés d'un' UITabBarItem' ont changé? –

6

Je l'ai fait récemment dans une application. Il y avait si peu de "code" qu'il n'y a presque rien à afficher. Je l'ai fait en tant que tel:

Créé un UIImageView (environ 50 px de haut), et exposé au bas de l'écran. Je l'ai rempli d'une image semblable à une barre d'onglets - c'est-à-dire une sorte de dégradé de gris. J'ai probablement sous-classé UIImageView - mais vous n'avez même pas à le faire.

J'ai dessiné un tas de boutons/icônes - 37x37 chacun.

J'ai placé un groupe d'UIButtons dans la "barre d'onglets" - et les ai rendus "personnalisés", avec les boutons/icônes que j'avais créés. J'ai simplement utilisé les méthodes touchUpInside pour les faire faire des choses. Quand j'avais besoin de fantaisie - j'attachais les boutons à mon code via et IBOutlet, donc je pouvais les "désactiver" - et je dessinais une image "état désactivé" gris pour eux.

+0

Le feriez-vous encore comme ça aujourd'hui? ou y a-t-il une meilleure approche? :) –

4

Si vous voulez la même fonctionnalité, je vous recommande d'utiliser un UITabBarController, de masquer la barre d'onglets elle-même, puis de créer votre propre navigation. Je l'ai fait quelques fois et ça marche plutôt bien.

Utilisez quelque chose comme ceci pour masquer votre barre d'onglets et développer l'affichage du contenu.Puis faites votre propre navigation avec UIButtons pour basculer entre les contrôleurs de vue.

[tabBarController_ setSelectedIndex:0];

Questions connexes