2010-11-22 6 views

ответ

34

IOS 8 (UIAlertController)

Это супер просто сделать, если вы используете UIAlertController. Просто измените цвет оттенка на вид UIAlertController.

[alertController.view setTintColor:[UIColor red]; 

IOS 7 (UIActionSheet)

Я успешно изменить цвет текста, используя этот простой метод.

- (void) changeTextColorForUIActionSheet:(UIActionSheet*)actionSheet { 
    UIColor *tintColor = [UIColor redColor]; 

    NSArray *actionSheetButtons = actionSheet.subviews; 
    for (int i = 0; [actionSheetButtons count] > i; i++) { 
     UIView *view = (UIView*)[actionSheetButtons objectAtIndex:i]; 
     if([view isKindOfClass:[UIButton class]]){ 
      UIButton *btn = (UIButton*)view; 
      [btn setTitleColor:tintColor forState:UIControlStateNormal]; 

     } 
    } 
} 

Убедитесь, чтобы запустить этот ПОСЛЕ вы звоните

[actionSheet showInView]; 

Если вы называете это раньше [showInView], все кнопки, но кнопка отмены будет окрашена. Надеюсь, это поможет кому-то!

1

К сожалению, без использования недокументированных API нет официального способа изменить цвет кнопки на листе UIActionSheet. Вы можете настроить его, если вы подклассифицируете элемент управления UIActionSheet.

Смотрите этот пример: http://blog.corywiles.com/customizing-uiactionsheet-buttons

+0

ли вы когда-нибудь делал это? Любой пример кода будет действительно полезен. – Abhinav 2010-11-22 17:47:08

+0

См. Ссылку, которую я разместил выше. – 2010-11-22 17:50:23

+0

Большое вам спасибо !!! – Abhinav 2010-11-22 18:21:18

7

Я создал класс ребенка UICustomActionSheet, который позволяет настраивать шрифты, цвета и изображения кнопок внутри UIActionSheet. Это абсолютно безопасный для AppStore, вы можете найти код этого класса на следующей ссылке:

https://github.com/gloomcore/UICustomActionSheet

Наслаждайтесь!

1

Мы можем использовать фоновое изображение, чтобы сделать это. Я думаю, что это самый простой способ.

UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:@"Actionsheet" delegate:self cancelButtonTitle:nil destructiveButtonTitle:nil otherButtonTitles:nil]; 
     [actionSheet addButtonWithTitle:@"Button 1"]; //Blue color 
     [actionSheet addButtonWithTitle:@"Button 2"]; 
     [actionSheet addButtonWithTitle:@"Cancel"]; 
     [actionSheet addButtonWithTitle:nil]; 
     [actionSheet setCancelButtonIndex:2]; 
     [actionSheet setDestructiveButtonIndex:1]; 
     [actionSheet showInView:self.view]; 
     UIButton *button = [[actionSheet subviews] objectAtIndex:1]; 
     UIImage *img = [button backgroundImageForState:UIControlStateHighlighted];//[UIImage imageNamed:@"alert_button.png"]; 
     [button setBackgroundImage:img forState:UIControlStateNormal]; 
0

Вы можете легко достигнуть его, используя следующий код

компании Apple UIActionSheetDelegate протокол документации

https://developer.apple.com/library/ios/documentation/uikit/reference/UIModalViewDelegate_Protocol/UIActionSheetDelegate/UIActionSheetDelegate.html

- (void)willPresentActionSheet:(UIActionSheet *)actionSheet 
{ 
    for (UIView *_currentView in actionSheet.subviews) 
    { 
     if ([_currentView isKindOfClass:[UIButton class]]) 
     {  
      UIButton *button = (UIButton *)_currentView; 
      [button setTitleColor:YOUR_COLOR forState:UIControlStateNormal]; 
     } 
    } 
}