Цвет кнопки UIActionSheet - PullRequest
       12

Цвет кнопки UIActionSheet

16 голосов
/ 22 ноября 2010

Как изменить цвет цвета кнопки UIActionSheet?

Ответы [ 5 ]

34 голосов
/ 05 октября 2013

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], все кнопки, кроме кнопки отмены, будут окрашены. Надеюсь, это кому-нибудь поможет!

7 голосов
/ 13 января 2012

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

https://github.com/gloomcore/UICustomActionSheet

Наслаждайся этим!

1 голос
/ 07 февраля 2013

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

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];
1 голос
/ 22 ноября 2010

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

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

0 голосов
/ 01 сентября 2014

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

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];
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...