UITabBar ne montrant pas l'élément sélectionné les images dans ios 7
Les icônes montrent bien dans ios 6, mais pas dans ios 7. Je suis l'état sélectionné dans le viewController méthode viewDidLoad. Lorsque l'utilisateur sélectionne un onglet de la barre de l'élément de l'image disparaît.
Voici mon code:
UITabBar *tabBar = self.tabBarController.tabBar;
if ([UITabBar instancesRespondToSelector:@selector(setSelectedImageTintColor:)]) {
[self.tabBarController.tabBar setSelectedImageTintColor:[UIColor whiteColor]];
}
UITabBarItem *item0 = [tabBar.items objectAtIndex:0];
UITabBarItem *item1 = [tabBar.items objectAtIndex:1];
UITabBarItem *item2 = [tabBar.items objectAtIndex:2];
UITabBarItem *item3 = [tabBar.items objectAtIndex:3];
[item0 setTitle:@"Home"];
[item1 setTitle:@"Calendar"];
[item2 setTitle:@"News"];
[item3 setTitle:@"My Events"];
[item0 setFinishedSelectedImage:[UIImage imageNamed:@"homeIconSelected.png"] withFinishedUnselectedImage:[UIImage imageNamed:@"home2.png"]];
[item1 setFinishedSelectedImage:[UIImage imageNamed:@"Calendar"] withFinishedUnselectedImage:[UIImage imageNamed:@"CalendarIconSelected"]];
[item2 setFinishedSelectedImage:[UIImage imageNamed:@"NewsIconSelected"] withFinishedUnselectedImage:[UIImage imageNamed:@"News"]];
[item3 setFinishedSelectedImage:[UIImage imageNamed:@"EventsIconSelected"] withFinishedUnselectedImage:[UIImage imageNamed:@"Events"]];
[item1 imageInsets];
[item2 imageInsets];
[item3 imageInsets];
InformationsquelleAutor user1898829 | 2013-09-19
Vous devez vous connecter pour publier un commentaire.
Vous devez utiliser tabBarItem
initWithTitle:image:selectedImage
en conjonction avec l'évolution de la UIImage mode de rendu:
ou (pour appliquer parent vues modèle de teinte masque, cette option est par défaut de l'Onglet Éléments de la barre, sauf si vous choisissez ci-dessus le mode de rendu)
voici un exemple de code pour une barre d'onglet de l'élément :-
Espère que cette aide
In conjunction with changing the UIImage rendering mode: imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal
est un très important détail. Si votre image est configuré comme un modèle, le système par défaut de couleur apparaît. Ainsi, au lieu deitem.selectedImage = someImage;
, essayezitem.selectedImage = [someImage imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
et voir si cela fonctionne.Ensemble élément de barre de l'image en mode de rendu d'origine peut résoudre ce problème.
Cela peut être fait en utilisant des images dans le .xcassets, de sorte que vous n'avez pas à écrire beaucoup de code.
Première étape, drap&drop votre barre des images d'élément d'Actif.xcassets.
Deuxième étape, choisissez l'élément de barre de l'image, et le changement [Rendu] à [Image Originale]
ps: j'ai l'habitude de définir la TabBarController de l'onglet éléments de la barre tout en story-board, pour éviter d'écrire beaucoup de code.
Ajouter ces lignes de codes dans
cela fonctionne pour moi... et espérer pour le mieux...
Pas de réponses a aidé à la résolution de ce problème. La raison principale est que mon
TabBarController
n'était pas monRootViewController
.La solution que j'ai utilisée pour des story-boards, et j'ai juste cliqué sur mon
UITabButton
et j'ai ajouté un moteur d'exécution de l'attribut deselectedImage
:Pour chacun des différents points de vue associés à la
UITabController
.Après avoir passé quelques heures à essayer de faire de mon personnalisée tabbar de travailler à la fois pour iOS 6 & 7, c'est ce qui a fonctionné pour moi...
si vous travaillez avec des story-boards, vous devez mettre de l'identificateur : "personnalisé" dans la manette de Navigation.
alors :
Cela fonctionne pour moi.
Aucune réponse n'a fonctionné pour moi - je suis en utilisant MonoTouch, mais si vous définissez la
TintColor
propriété de laUITabBar
lui-même qui mettra en évidence l'image sélectionnée avec cette couleur. En obj c, il peut êtresetTintColor
fonction.J'ai eu le même problème avec Xcode 6.0.1 (6A317), qui semble être un bug avec Interface builder.
Cependant, j'ai réussi à le résoudre en laissant
selected image
vide dans interface builder, puis à chaqueviewDidLoad
, à mon avis, les contrôleurs, je n'ai insérer:[self.navigationController.tabBarItem setSelectedImage:[UIImage imageNamed:@"imagename-selected"]];
il fonctionne bien maintenant, montrant mon
selectedImage
et avec la teinte globale masque.Basé sur la réponse de 132206, j'ai fait cette méthode pour AppDelegate, appelé à partir de
application:didFinishLaunchingWithOptions:
avec:[self configureSelectedImages];
Il nécessite à l'évidence une stricte de la convention d'affectation de noms pour votre onglet images, mais peut aussi être utilisé sans modification. À l'évidence, - le nom de votre onglet sélectionné, la barre des images TabbarXXXSelected, où XXX est égal au titre de la barre d'onglet de l'élément.
Vous devriez écrire à la fonction:
J'espère que cette aide
Dans votre premier point de vue du contrôleur .h fichier, j'ai ajouté ce qui suit:
@property (faible, nonatomic) IBOutlet UITabBarItem *mapViewTabBarItem;
@property (faible, nonatomic) IBOutlet UITabBarItem *profileViewTabBarItem;
@property (faible, nonatomic) IBOutlet UITabBarItem *notificationViewTabBarItem;
(à noter que la mapViewTabBarItem était lié par ctrl glisser le réel barre d'onglet de l'élément dans la liste des déclarations de propriété dans le haut de la .h fichier)
Ensuite, dans la même vue du contrôleur .m fichier dans le viewDidLoad, ajoutez la ligne suivante:
J'ai eu un problème similaire. J'ai créé la barre d'onglet dans le storyboard et l'ajout de toutes les images à travers l'interface du générateur de menus, rien dans le code.
Ma solution était simple: sous les attributs de la fenêtre de l'inspecteur de l'IB, la Barre d'Onglet de l'Élément de champ "Image Sélectionnée" doit être vide, et l'Élément de Barre de champ "Image" doit être rempli avec l'image que vous voulez.
Je suis sous Xcode 6.0.1 et d'essais avec iOS 8.0.2 appareils.
Essayez ceci:
J'ai eu le même problème. Mais le travail avec des story-boards, m'ont empêché de changer quoi que ce soit dans le code. Laissant l'image vide dans la table de montage séquentiel supprimé cet obstacle pour moi. Cependant de mettre le initWithTitle dans le viewWillAppear méthode de l'onglet du viewcontroller m'a donné comportement étrange. D'abord obtenir l'image sélectionnée requis un clic supplémentaire et les images ne s'affichent pas pour les non-initiale onglets.
Pour moi la fixation de ce était ajoutant le code suivant à l'AppDelegate dans le DidFinishLoadingWithOptions (similaire à 132206 et Amitabha):
Utiliser le code ci-dessous pour résoudre la question d'image dans iOS7:
Il est facile à nettoyer et solution de catégorie pour UITabBar Éléments.
Viens de créer une catégorie et d'utiliser le moteur d'Exécution de l'Attribut et de la renvoyer à partir de la catégorie comme ci-dessous.
De vieilles questions, mais va ajouter ma solution pour Xamarin.iOS/C# et ceux qui veulent créer les images via l'Interface builder. J'ai mis le
Selected Image
etImage
attributs via Interface Builder. Ensuite, dans le code, j'ai défini uneInitTabs()
méthode comme ceci:Appel
InitTabs()
dansViewDidLoad
et maintenant la bonne image apparaîtra pour les deux sélectionnés et non sélectionnés état.Voici une solution Swift Swift-les Gars 🙂
Ce qui est exactement ce qui se passe ici:
Réglage des couleurs de texte partie est importante si vous ne voulez pas garder le titre de l'élément de couleur grise pour .Normal et le bleu pour .Sélectionné, comme il l'est par défaut. C'est souvent réelle quand vous considérez des images personnalisées pour l'onglet éléments de la barre.
Swift version de montrer sélectionnés et non sélectionnés images et le titre avec UIAppearance API
Dans votre Appdelegate.m copiez code ci-dessous si vous avez l'onglet base de l'app.de code suivant suppose que vous avez 4 barre d'onglet.
Après avoir essayé tous les autres réponses et de la difficulté qu'ils ont échoué, j'ai trouvé la réponse. Les autres réponses , ne semblent pas fonctionner en courant swift version. Dans Swift 2.3, cela fonctionne pour moi. Pour ceux qui sont toujours des problèmes, essayez ceci: