2013-10-06 56 views

回答

28

利用的UIActionSheetwillPresentActionSheet委託方法來改變動作片按鈕顏色。

- (void)willPresentActionSheet:(UIActionSheet *)actionSheet 
{ 
    for (UIView *subview in actionSheet.subviews) { 
     if ([subview isKindOfClass:[UIButton class]]) { 
      UIButton *button = (UIButton *)subview; 
      button.titleLabel.textColor = [UIColor greenColor]; 
     } 
    } 
} 
+3

這個答案比較好。更不用說更簡潔的使用委託方法。上面的答案也不會改變取消按鈕的顏色。 – LazerLex

+0

出於某種原因,如果你也想改變字體,你所要做的,改變顏色之前,否則將無法正常工作 –

+0

@BrenoGazzola:會發生什麼? –

18

你可以做這樣的事情:

// Your code to instantiate the UIActionSheet 
UIActionSheet *actionSheet = [[UIActionSheet alloc] init]; 
// Configure actionSheet 

// Iterate through the sub views of the action sheet 
for (id actionSheetSubview in actionSheet.subviews) { 
    // Change the font color if the sub view is a UIButton 
    if ([actionSheetSubview isKindOfClass:[UIButton class]]) { 
     UIButton *button = (UIButton *)actionSheetSubview; 
     [button setTitleColor:[UIColor greenColor] forState:UIControlStateNormal]; 
     [button setTitleColor:[UIColor greenColor] forState:UIControlStateSelected]; 
     [button setTitleColor:[UIColor greenColor] forState:UIControlStateHighlighted]; 

    } 
} 

如果你打算重用這個有很多,我會繼承UIActionSheet和使用此代碼。

+0

那是使用私有的API? –

+0

不,它只是訪問一個UIActionSheet的所有子視圖,並找到按鈕 – Tim

+1

當您點擊它,它變回藍色。 –

0

您可以使用您的AppDelegate didFinishLaunchingWithOptions方法這短短的功能很容易地改變應用程序的着色顏色。

[[UIView appearance] setTintColor:[UIColor redColor]]; 

希望它會幫助你:)

相關問題