Je souhaite pouvoir modifier les couleurs et la taille de police des segments d'un UISegmentedControl. Je suis en train de définir le tag pour chaque segment, puis de définir le paramètre tintColor: forTag: pour chacun des segments.UISegmentedControl - Modification des couleurs et de la taille - Ne fonctionne pas correctement
Changement des couleurs fonctionne très bien, jusqu'à ce que je pan de la commande ou pincer. Dans le code UIPinchGestureRecognizer, j'ai défini titleTextAttributes pour avoir une taille de police différente. Lorsque je fais cela, les couleurs des segments reviennent à la couleur par défaut de Gary.
- (void)createElement {
if (multiStateControl == nil) {
//Make our new switch
//multiStateControl = [UIButton buttonWithType:UIButtonTypeCustom];
multiStateControl = [[UISegmentedControl alloc] initWithItems:[NSArray arrayWithObjects:@"Off State Button", @"On State Button", nil]];
multiStateControl.segmentedControlStyle = UISegmentedControlStyleBar;
[multiStateControl setTitleTextAttributes:
[NSDictionary dictionaryWithObjectsAndKeys:
[UIFont boldSystemFontOfSize:12.0f], UITextAttributeFont,
nil]
forState:UIControlStateNormal];
[multiStateControl setFrame:CGRectMake(0.0f, 0.0f, 100.0f, 30.0f)];
// Set up the Contents Frame to the same origin as what we were but set the height/width to the new control.
[elementViewContents setFrame:CGRectMake(elementViewContents.frame.origin.x,
elementViewContents.frame.origin.y,
CGRectGetWidth(multiStateControl.frame),
CGRectGetHeight(multiStateControl.frame))];
//Set initial use to disabled
[multiStateControl setOpaque:NO];
// Set the default title for the button
[multiStateControl setTag:kTagOffState forSegmentAtIndex:0];
[multiStateControl setTag:kTagOnState forSegmentAtIndex:1];
[multiStateControl setTintColor:onColor forTag:kTagOnState];
[multiStateControl setTintColor:offColor forTag:kTagOffState];
// Lets get it on the screen
[elementViewContents addSubview:multiStateControl];
[multiStateControl release];
[self contentSizeChanged];
}
}
// Pincez Gesture
-(void) pinchElement:(UIPinchGestureRecognizer *)gestureRecognizer {
UIFont *existingFont = [[multiStateControl titleTextAttributesForState:UIControlStateNormal] objectForKey:UITextAttributeFont];
CGFloat existingFontSize = [existingFont pointSize];
CGFloat newFontSize = existingFontSize * [gestureRecognizer scale] ;
[multiStateControl setTitleTextAttributes:
[NSDictionary dictionaryWithObjectsAndKeys:
[UIFont boldSystemFontOfSize:newFontSize],
UITextAttributeFont, nil]
forState:UIControlStateNormal];
[multiStateControl setFrame:CGRectMake(multiStateControl.frame.origin.x, multiStateControl.frame.origin.y, multiStateControl.frame.size.width+20,newFontSize *1.8)];
}
Cela a du sens pour la TextColor. Je ne vérifie pas ça, je vais devoir, merci. Bien que les couleurs que j'ai un problème avec sont la teinteColor des segments. Le segment TintColor du segment est-il masqué dans TextAttributes? – scooter133
ressemble à la teinte n'est pas dans les attributs, vous devrez utiliser la méthode tintColor: pour les obtenir, définir la police puis utiliser setTintColor: – valexa