2013-09-23 94 views
7

我想知道如何將UIButton的標題顏色更改回默認值。UIButton默認標題顏色iOS7

我有一個按鈕,我改變標題顏色來表示一個東西是在這樣的;

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

然後,當它關閉時,我想改回默認的顏色。

我不知道如何獲得UIButton的默認系統顏色。我發現許多人通過強制某個特定的RGB值來做到這一點,但這在不同版本的iOS中並不一定是正確的。

回答

1

在iOS中沒有默認標題顏色的屬性,你可以簡單地得到它。

只要定義defaultColor:

UIColor* defaultColor;然後在viewDidLoad放或其它地方的觀點得到初始化:

defaultColor = [button titleColorForState: UIControlStateNormal]; 

然後,你必須defaultColor作爲默認的標題顏色。

0

添加以下代碼中的cellForRowAtIndexPath委託......

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

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

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

然後在按鈕動作添加以下代碼

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

我假定你的意思是你要的文字重新設置到tintColor。如果你只是想在當前tintColor,你可以這樣做:

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

然而,tintColor應該在某些情況下,例如當警報彈出自動改變。爲了做到這一點,我想你需要定義自己的按鈕:

@interface MyButton : UIButton 
@end 

@implementation MyButton 

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

@end 

在這種情況下,我建議你使用所選的狀態你特殊顏色:

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

,並設置button.selected = YES時正如你所說,「有些事情正在進行中」。

11

將顏色設置爲零,它的行爲將返回到它更改之前的狀態,包括正確響應警報。

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

[button setTintColor: null] 

在iOS系統V7.0,UIView的的所有子類獲得它們的行爲,用於從基類 tintColor。有關更多信息,請參閱 UIView級別上關於tintColor的討論。

此屬性對於類型爲 UIButtonTypeCustom的按鈕沒有默認效果。對於自定義按鈕,您必須自行執行與tintColor相關的任何 行爲。

設置的UIButton的tintColor爲零(空)將重置其標題的顏色