91 votes

Comment changer la couleur de police de UISegmentedControl

J'essaie de changer la couleur de la police du blanc au noir pour UISegmentedControl (pour iOS 4. *)

 UISegmentedControl *button = [[[UISegmentedControl alloc] initWithItems:[NSArray arrayWithObjects:itemTitle, nil]] autorelease];
button.momentary = YES;
button.segmentedControlStyle = UISegmentedControlStyleBar;
button.tintColor = [UIColor redColor];      
for (id segment in [button subviews]) {
    for (id label in [segment subviews]) {
        if ([label isKindOfClass:[UILabel class]]) {
            UILabel *titleLabel = (UILabel *) label;
            [titleLabel setTextColor:[UIColor blackColor]];
        }
    }
}
UIBarButtonItem *barButtonItem = [[[UIBarButtonItem alloc] initWithCustomView:button] autorelease];
 

Mais la couleur du texte ne change pas. Que dois-je faire pour changer la couleur du texte pour UISegmentedControl ?

133voto

pbibergal Points 1956

Dans iOS 5.0 et supérieur, c'est très simple:

 NSDictionary *attributes = [NSDictionary dictionaryWithObjectsAndKeys:
                            [UIFont boldSystemFontOfSize:17], UITextAttributeFont,
                            [UIColor blackColor], UITextAttributeTextColor,
                            nil];
[_segmentedControl setTitleTextAttributes:attributes forState:UIControlStateNormal];
NSDictionary *highlightedAttributes = [NSDictionary dictionaryWithObject:[UIColor whiteColor] forKey:UITextAttributeTextColor];
[_segmentedControl setTitleTextAttributes:highlightedAttributes forState:UIControlStateHighlighted];
 

93voto

i-- Points 1016

Si vous devez changer la couleur du texte du segment en surbrillance dans iOS 7, voici une solution (il m'a fallu un certain temps pour la trouver, mais grâce à ce post ):

 [[UISegmentedControl appearance] setTitleTextAttributes:@{NSForegroundColorAttributeName : [UIColor colorBlack]} forState:UIControlStateSelected];
 

31voto

Nimit Parekh Points 4543

Vous trouverez ci-dessous le code pour définir la police en gras et en taille de point:

 UIFont *Boldfont = [UIFont boldSystemFontOfSize:12.0f];
NSDictionary *attributes = [NSDictionary dictionaryWithObject:Boldfont
                                                       forKey:UITextAttributeFont];
[segmentedControl setTitleTextAttributes:attributes 
                                forState:UIControlStateNormal];
 

J'espère que ça aide

6voto

Levitate Points 61
 for (UIView *v in [[[segment subviews] objectAtIndex:0] subviews]) {
    if ([v isKindOfClass:[UILabel class]]) {
        UILabel *label=(UILabel *)[v retain];
        lable.textColor=[UIColor blackColor];
    }
}
 

pour iOS 3.0 et supérieur

2voto

dulgan Points 1707

Dans iOS 5.0 et versions ultérieures, vous pouvez utiliser le titleTextAttributes pour personnaliser UISegmentedControl objets :

NSDictionary *segmentedControlTextAttributes = @{NSFontAttributeName:[UIFont fontWithName:@"HelveticaNeue" size:18.0], NSForegroundColorAttributeName:[UIColor whiteColor]};
[self.segmentedControl setTitleTextAttributes:segmentedControlTextAttributes forState:UIControlStateNormal];
[self.segmentedControl setTitleTextAttributes:segmentedControlTextAttributes forState:UIControlStateHighlighted];
[self.segmentedControl setTitleTextAttributes:segmentedControlTextAttributes forState:UIControlStateSelected];

Ici, je mis la police à un type de police, taille de police, couleur de chaque état de l' UISegmentedControl.

Vous trouverez tous les personnalisations simples dans la Curstomizing Apparence de la section de la UISegmentedControl Classe de Référence.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X