UIAlertController tint color defaults to blue on highlight

后端 未结 11 1023
傲寒
傲寒 2021-01-01 10:56

I\'m use the following code to present a UIAlertController action sheet with the item text as red. I\'ve used the tint property to set the color.

UIAlertCont         


        
相关标签:
11条回答
  • 2021-01-01 11:17

    This is a known Bug, see https://openradar.appspot.com/22209332

    To fix it, reapply the tint color in the Completion handler. Here's my Swift Solution, you will be able to adapt it easily for ObjC:

    alertController.view.tintColor = UIColor.redColor() // apply 1st time to prevent flicker from Blue to Red when displaying
    
    navigationController?.presentViewController(alertController, animated: true, completion: {
        // Bugfix: iOS9 - Tint not fully Applied without Reapplying
        alertController.view.tintColor = UIColor.redColor()
    })
    

    One Note: This does not fix the Bug entirely. You will notice upon Device Rotation that the Buttons are recolored with System Default (= Blue) tint.

    Expect it to be fixed with iOS 9.1.

    Edit 10/23/2015: Still not fixed with iOS 9.1. Retested with iOS 9.1 + Xcode 7.1 (7B91B) released a couple of days ago. As of now setting the .tintColor does not work, however as commented you can set the tintColor of the whole Application, e.g. in AppDelegate didFinishLaunchingWithOptions set window?.tintColor = UIColor.redColor(). This also tints the AlertController Buttons but may not be suitable in some cases as this tint is applied throughout the whole Application.

    0 讨论(0)
  • 2021-01-01 11:20

    Just change your view tintAdjustmentMode to UIViewTintAdjustmentModeNormal, so it will not change it's color on dimm.

    0 讨论(0)
  • 2021-01-01 11:20

    UIAlertController is availabel iOS 8 and later , thus there is a bug for devices with older version. There's no problem for devices with corresponding or higher version.

    0 讨论(0)
  • 2021-01-01 11:26

    You can change button colour like this

    UIAlertAction* button = [UIAlertAction
                                  actionWithTitle:@"Delete Profile"
                                  style:UIAlertActionStyleDefault
                                  handler:^(UIAlertAction * action)
                                  {
                                      //Add Action.
                                  }];
    [button setValue:[UIColor redColor] forKey:@"titleTextColor"];
    

    By Using this line [button setValue:[UIColor redColor] forKey:@"titleTextColor"]; You can change the button colour of your action sheet

    0 讨论(0)
  • 2021-01-01 11:27

    Update for Swift 4, Xcode 9

    private static func setupAppearanceForAlertController() {
        let view = UIView.appearance(whenContainedInInstancesOf: [UIAlertController.self])
        view.tintColor = .black
    }
    
    0 讨论(0)
提交回复
热议问题