代码之家  ›  专栏  ›  技术社区  ›  Abhinav

uiActionSheet按钮的颜色

  •  16
  • Abhinav  · 技术社区  · 13 年前

    如何更改uiactionsheet按钮的颜色?

    5 回复  |  直到 9 年前
        1
  •  34
  •   Rymnel    9 年前

    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]之前调用它,则除“取消”按钮之外的所有按钮都将被着色。希望这能帮助别人!

        2
  •  7
  •   Gloomcore    12 年前

    我已经创建了uiCustomActionSheet子类,它允许自定义uiActionSheet内按钮的字体、颜色和图像。这对AppStore是绝对安全的,您可以在下一个链接中找到此类的代码:

    https://github.com/gloomcore/UICustomActionSheet

    好好享受吧!

        3
  •  1
  •   Evan Mulawski    13 年前

    不幸的是,如果不使用未记录的API,就没有正式的方法来更改uiactionsheet上按钮的颜色。如果对uiactionsheet控件进行子类化,则可以自定义此控件。

    请参见此示例: http://blog.corywiles.com/customizing-uiactionsheet-buttons

        4
  •  1
  •   Mr Phuc 87    11 年前

    我们可以用背景图像来做。我认为这是最简单的方法。

    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];
    
        5
  •  0
  •   Akshit Zaveri    10 年前

    您可以使用以下代码很容易地实现它

    苹果 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];
            }
        }
    }