UISegmentedControl Couleur dans un UIToolbar
Ma question tourne autour de la distinction d'un UISegmentedController sur un UINavigationBar vs un UIToolbar. Si je laisse tomber un UISegmentedControl dans une barre de navigation comme suit:
navigationBar.barStyle = UIBarStyleBlackTranslucent;
tout est bien. Le UISegmentedControl identifie l'option sélectionnée est un peu plus sombre noir. Mais, si je laisse tomber un UISegmentedControl sur un UIToolbar, il ne ramasse pas de la couleur ou de transparence de la barre d'outils. Si je régler manuellement la nuance de couleur la UISegmentedControl ne fait pas la distinction entre sélectionnés et non sélectionnés plus.
Certes, on doit conclure de la UISegmentedControl dans un UIBarButtonItem avant de tomber sur un UIToolbar. Je me demande si c'est une partie de la raison pour laquelle le UISegmentedControl semble incorrect (en bleu sur transparent fond noir).
toolbar.barStyle = UIBarStyleBlackTranslucent;
UIBarButtonItem *item = [[[UIBarButtonItem alloc] initWithCustomView:segmentedControl];
NSArray *toolbarItems = [[NSArray alloc] initWithObjects:item,nil];
toolbar.items = toolbarItems;
Accordée, mon code n'est pas EXACTEMENT comme écrit depuis que je suis en utilisant la navigation interne et de contrôleur de la barre d'outils, mais la logique est la même. Je ne suis pas sûr de la façon de faire de la UISegmentedControl sur le UIToolbar ont un noir translucide style - le maintien d'une distinction évidente entre sélectionnés et non sélectionnés segments.
Avez-vous le comprendre à la fin?
Jusqu'à ce que Apple met en œuvre UINavigation coloriage logique dans le UIToolbar pour la UISegmentedControl, j'ai été relégué à l'utilisation de la nuance de couleur de la propriété.
OriginalL'auteur Luther Baker | 2010-01-01
Vous devez vous connecter pour publier un commentaire.
Semble comme:
segmentedController.tintColor = [UIColor darkGrayColor];
de résoudre votre problème.Pour supprimer la "dépendance", sous-classe UISegmentedControl et de définir la teinte dans le constructeur.
CustomSegmentedControl.m
Malheureusement, quand un UISegmentedControl est placé à l'intérieur d'un UIToolbar, il n'est pas automatiquement refléter la barre d'outils de style, couleur de l'option et, comme vous l'avez illustré, j'ai explicitement dire de quelle couleur sera. Dans cet exemple, je suis d'identifier que comme une "dépendance" et je suis à la recherche d'une solution qui n'est pas à introduire ce type de dépendance. Je ne veux pas définir la couleur en plusieurs endroits.
Parce que c'est une sous-classe, la couleur ne se produit qu'une fois dans votre code. Ceci est une caractéristique de conception orientée objet. Vous pouvez avoir 100 CustomSegmentedControl instances de votre application, mais la couleur n'est indiqué une fois.
Il est plus que cela. Quand j'permettre à l'utilisateur de changer dynamiquement la couleur d'arrière-plan ... tous les 100 de votre CustomSegmentedControl instances sur l'écran vont être de la mauvaise couleur. Votre approche exige que je me souviens, suivre et mettre à jour chaque instance de contrôle que j'ai personnalisé de couleur. Je suis à la recherche de quelque chose d'un peu plus élégant ... comme le construit dans le comportement que je décris ci-dessus où la UISegmentedControl se met automatiquement en bleu ou noir ou translucide basé sur la UINavigationBar du style. Malheureusement, il ne semble pas de le faire sur la UIToolbar.
Merci, ça a fonctionné parfaitement.
OriginalL'auteur bentford