2013-10-06 9 views

Odpowiedz

28

Użyj metody delegatów willPresentActionSheet z UIActionSheet, aby zmienić kolor przycisku arkusza czynności.

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

Ta odpowiedź jest lepsza. Używa metody delegatów, aby nie wspominać o większej zwięzłości. Również powyższa odpowiedź nie zmienia koloru przycisku anulowania. – LazerLex

+0

Z jakiegoś powodu, jeśli chcesz zmienić czcionkę, musisz to zrobić przed zmianą koloru, lub nie zadziała –

+0

@BrenoGazzola: Co się stanie? –

18

Można zrobić coś takiego:

// 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]; 

    } 
} 

Jeśli masz zamiar użyć ponownie tego dużo, bym podklasy UIActionSheet i użyć tego kodu.

+0

Czy to za pomocą prywatnych API? –

+0

Nie, jest to dostęp tylko do wszystkich subskrybentów arkusza UIActionSheet i znajdowanie przycisków – Tim

+1

Po dotknięciu zmienia się z powrotem na niebieski. –

0

można zmienić łatwo Odcień aplikacji przy użyciu tej funkcji na krótki metodą didFinishLaunchingWithOptions AppDelegate.

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

nadzieję, że pomoże :)

Powiązane problemy