2013-09-23 24 views
7

UIButton Başlığı Rengi'ni varsayılan değere geri döndürmeyi öğrenmek istiyorum.UIButton Varsayılan Başlık Rengi iOS7

Bir şeyin açık olduğunu belirtmek için başlık rengini değiştirdiğim bir düğme var; o kapalı olduğunda

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

Sonra ben tekrar varsayılan renge değiştirmek istiyorum.

UIButton için varsayılan sistem rengini nasıl alacağımı anlayamıyorum. Belirli bir RGB değerini zorlayarak bunu yapan birçok insan buldum, ancak bu iOS'un farklı sürümlerinde mutlaka doğru değil.

cevap

1

iOS'ta varsayılan başlık rengi için bir özellik yok, yalnızca bunu alabilirsiniz. görünüm başlatıldı olsun her yerde viewDidLoad koymak sonra

UIColor* defaultColor; ya:

Sadece defaultColor tanımlamak
defaultColor = [button titleColorForState: UIControlStateNormal]; 

Sonra varsayılan başlık renk olarak defaultColor var.

0

sonra düğme eylem ...... cellForRowAtIndexPath temsilci

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

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

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

aşağıdaki kodu ekleyin aşağıdaki kodu

-(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

Ben size geri metni ayarlamak istediğiniz anlamına varsayalım eklemek tintColor. Sadece geçerli tintColor istiyorsanız, yapabilirsiniz:

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

Ancak tintColor otomatik böyle bir uyarı penceresi açıldığında gibi bazı durumlarda değişecek gerekiyordu. Bunu başarmak için, ben kendi düğmeye tanımlamak gerekir düşünüyorum: Bu durumda

@interface MyButton : UIButton 
@end 

@implementation MyButton 

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

@end 

, ben sizin için özel bir renk seçilmiş durumu kullanmak teklif:

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

ve button.selected = YES zaman set Söylediğiniz gibi "bir şey var".

11

Rengi sıfır olarak ayarlayın ve bu davranış, uyarılar için uygun şekilde yanıt vermek de dahil olmak üzere, değiştirilmeden önceki durumuna döndürülecektir.

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

veya IOS v7.0 olarak

[button setTintColor: null] 

, UIView bütün alt sınıflar temel sınıfından tintColor yönelik davranışı elde. Daha fazla bilgi için UIView seviyesinde tintColor tartışmasına bakın.

Bu özellik, UIButtonTypeCustom gibi düğmeler için varsayılan bir etkiye sahip değildir. Özel düğmeler için tintColor ile ilgili herhangi bir davranışını uygulamanız gerekir. onun başlığının rengini sıfırlayacak nil (null) için UIButton en tintColor ayarı

İlgili konular