2013-09-23 8 views
7

Je veux savoir comment changer la couleur de titre d'un UIButton à la valeur par défaut.UIButton Titre par défaut Couleur iOS 7

J'ai un bouton que je change la couleur du titre pour indiquer quelque chose est sur, comme ceci;

[cell.offStateSwitch setTitleColor:[UIColor redColor] forState:UIControlStateNormal];

Puis, quand il est éteint, je veux changer revenir à la couleur par défaut.

Je n'arrive pas à comprendre comment obtenir la couleur par défaut d'un UIButton. J'ai trouvé beaucoup de gens en forçant une valeur RVB particulière, mais ce n'est pas nécessairement correct entre les différentes versions d'iOS.

Répondre

1

Il n'y a pas de propriété pour la couleur de titre par défaut dans iOS, vous pouvez l'obtenir simplement.

Il suffit de définir coulDéfaut:

UIColor* defaultColor; alors dans votre viewDidLoad vente ou là où la vue initialisées:

defaultColor = [button titleColorForState: UIControlStateNormal]; 

Ensuite, vous avez coulDéfaut comme la couleur du titre par défaut.

0

Ajoutez le code suivant dans délégué cellForRowAtIndexPath ......

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 

cell.button.tag=indexPath.row+100; 

[cell.button addTarget:self selector:@selector(changeButtonTitle:) forControlEvents:UIcontrolTouchUpEventInside]; 

puis dans l'action bouton ajoutez le code suivant

-(void)changeButtonTitle:(UIButton *)button 
{ 
    UITableViewCell *cell=(UITableViewCell *)button.superview.superview; 
    NSIndexpath *indexpath=[self.yourtableview indexPathForCell:cell]; 
    UIButton *tempButton=(UIButton *)[cell viewWithtag:indexPath.row+100]; 
    [tempButton setTitleColor:[UIColor redColor] forState:UIControlStateNormal]; 
} 
9

Je suppose que vous voulez dire que vous voulez remettre le texte au tintColor. Si vous voulez juste la tintColor actuelle, vous pouvez faire:

[button setTitleColor:button.tintColor forState:UIControlStateNormal]; 

Cependant, le tintColor est censé changer automatiquement dans certaines circonstances, par exemple quand une alerte apparaît. Pour y parvenir, je pense que vous devez définir votre propre bouton:

@interface MyButton : UIButton 
@end 

@implementation MyButton 

- (void) tintColorDidChange 
{ 
    [self setTitleColor:self.tintColor forState:UIControlStateNormal]; 
    [super tintColorDidChange]; 
} 

@end 

Dans ce cas, je vous vous propose d'utiliser l'état sélectionné couleur spéciale:

[button setTitleColor:[UIColor redColor] forState:UIControlStateSelected]; 

et mis button.selected = YES quand "Quelque chose est sur", comme vous dites.

11

Définissez la couleur sur zéro et son comportement redeviendra tel qu'il était avant de le modifier, notamment en répondant correctement aux alertes.

[myButton setTitleColor:nil forState:UIControlStateNormal]; 
5
button.tintColor = nil 

ou

[button setTintColor: null] 

Dans iOS v7.0, toutes les sous-classes de UIView tirent leur comportement pour tintColor de la classe de base. Voir la discussion de tintColor au niveau UIView pour plus d'informations.

Cette propriété n'a pas d'effet par défaut pour les boutons de type UIButtonTypeCustom. Pour les boutons personnalisés, vous devez implémenter tout comportement associé à tintColor.

réglage de tintColor de UIButton à zéro (null) réinitialise la couleur de son titre