关闭UIAlertController(IOS)后Tintcolor左后箭头navigationBar更改

时间:2016-09-13 10:58:00

标签: ios swift navigationbar tintcolor

编辑:自定义代码 此问题是由于在初始加载应用程序期间设置所有对象的tintColor引起的。

我的代码中有一个非常奇怪的情况。左后箭头的tintColor在:

之后变为另一种颜色
  1. 呈现UIAlertController
  2. 关闭UIAlertController
  3. 切换标签。 (在标签切换期间可以看到颜色变化)。
  4. 更改颜色后,我无法将其设置回原始颜色。

    我尝试了什么?

    1)在多个位置设置颜色。 (ViewWillAppear / ViewDidAppear)。

    self.navigationItem.backBarButtonItem?.tintColor = UIColor.redColor()
    self.navigationController?.navigationBar.tintColor  = UIColor.redColor()
    

    2)设置外观。

    UINavigationBar.appearance().tintColor = UIColor.yellowColor()
    

    3)尝试覆盖方法didSetTintColor

    4)在发布UIAlertView(下面的例子)后更改tintColor

    UIAlertAction(title: "Example button", style: .Cancel, handler: { action in
            alertController.removeFromParentViewController()
            self.navigationItem.backBarButtonItem?.tintColor = UIColor.greenColor()
            self.navigationController?.navigationBar.tintColor  = UIColor.greenColor() 
    })
    

    5)试过这个解决方案: Navigation bar tint color changes after auto dimissal of UIAlertView

    似乎没什么用。这可能是IOS的错误吗? 奇怪的是切换选项卡后不会发生更改,但是在不使用UIAlertViewController时也不会发生。

2 个答案:

答案 0 :(得分:0)

尝试设置TintAdjustmentMode

 [self.view setTintAdjustmentMode:UIViewTintAdjustmentModeNormal];

 [self.view setTintAdjustmentMode:UIViewTintAdjustmentModeAutomatic];

答案 1 :(得分:0)

我发现了问题。在app delegate中,一个函数正在设置整个应用程序的所有tintColors。显然,ActionController的关闭将再次改变tintColors

 for window in UIApplication.sharedApplication().windows {
        window.tintColor = UIColor.wrongColor()
    }