2012-08-23 4 views
1

J'ai donc un peu de code dont je m'attendrais à régler la couleur sélectionnée d'un contrôleur segmenté à ce que je demande, et les segments non sélectionnés à une autre couleur, voir le ci-dessous:UISegmentedControl ne me permet pas d'éditer la couleur sélectionnée

//normal segment 
NSDictionary *normalAttributes = [NSDictionary dictionaryWithObjectsAndKeys: 
            [UIFont fontWithName:@"Rok" size:20.0],UITextAttributeFont, 
            [UIColor colorWithRed:75.0/255.0 green:75.0/255.0 blue:75.0/255.0 alpha:1.0], UITextAttributeTextColor, 
            [UIColor clearColor], UITextAttributeTextShadowColor, 
            [NSValue valueWithUIOffset:UIOffsetMake(0, 1)], UITextAttributeTextShadowOffset, 
            nil];//[NSDictionary dictionaryWithObject: [UIColor redColor]forKey:UITextAttributeTextColor]; 
[segmentedControl setTitleTextAttributes:normalAttributes forState:UIControlStateNormal]; 

NSDictionary *selectedAttributes = [NSDictionary dictionaryWithObjectsAndKeys: 
            [UIFont fontWithName:@"Rok" size:20.0],UITextAttributeFont, 
            [UIColor whiteColor], UITextAttributeTextColor, 
            [UIColor clearColor], UITextAttributeTextShadowColor, 
            [NSValue valueWithUIOffset:UIOffsetMake(0, 1)], UITextAttributeTextShadowOffset, 
            nil] ;//[NSDictionary dictionaryWithObject: [UIColor redColor]forKey:UITextAttributeTextColor]; 
[segmentedControl setTitleTextAttributes:selectedAttributes forState:UIControlStateSelected]; 

Alors qu'est-ce que je fais mal? C'est vraiment frustrant que de changer directement la couleur du segment sélectionné soit si difficile! Je suis tenté d'utiliser une rangée de boutons!

Merci à tous ceux qui aident.

+0

changer la couleur du segment sélectionné UISegmentedControl –

Répondre

1

Ajoutez ce code dans l'événement changé de valeur de votre UISegmentedControl:

for (int i=0; i<[sender.subviews count]; i++) 
{ 
    if ([[sender.subviews objectAtIndex:i]isSelected]) 
    {    
    UIColor *tintcolor=[UIColor redColor]; //your requiremnent color here 
    [[sender.subviews objectAtIndex:i] setTintColor:tintcolor]; 
    break; 
    } 
} 
+0

C'est génial, merci beaucoup pour cela. Comment pourrais-je l'obtenir pour faire ce réglage de la couleur sur la charge? Comme dans, si je mets ce code dans la méthode de déchargement, il n'a pas encore changé l'index sélectionné donc la mise à jour bio est faite - idéalement, cette teinte sur le segment sélectionné doit s'appliquer au premier chargement. De plus, je remarque qu'il tient la couleur rouge lorsque vous cliquez sur un autre élément, comment faire le réglage à la sélection de couleur précédente? Ou devez-vous le définir explicitement comme une nouvelle couleur pour annuler les modifications apportées? – Creights

+0

Merci beaucoup! – ThePunisher

Questions connexes