2013-10-06 12 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]]; 

それはあなたを助けることを願っています:)

関連する問題