UINavigationBar.appearance().tintColor在Swift中不起作用

Fab*_*cci 3 uitabbar uiappearance swift

我将一个文件从Objective_c移植到Swift,它的配置改变了tabbar颜色:我在objective-c中使用的代码是:

UIColor* barColor=[UIColor colorWithRed:.88 green:.05 blue:.05 alpha:1];
if([self.navigationController.navigationBar respondsToSelector:@selector(barTintColor)])
{
    // iOS7
    self.navigationController.navigationBar.barTintColor = barColor;
}
else
{
    [[UINavigationBar appearance] setTintColor:barColor];
    // older
    //self.navigationController.navigationBar.tintColor = barColor;
}
[super viewWillAppear:animated];
Run Code Online (Sandbox Code Playgroud)

和Swift中的相应代码是:

let barColor = UIColor(red:0.88, green:0.05, blue:0.05, alpha:1)
if UIDevice.currentDevice().systemVersion.compare("8.0", options: .NumericSearch) == .OrderedDescending
    {
        // iOS8+
     UINavigationBar.appearance().tintColor=barColor
     //UINavigationBar.appearance().translucent=false
    }
    else
    {
        self.navigationController!.navigationBar.barTintColor = barColor;
    }
Run Code Online (Sandbox Code Playgroud)

然而,虽然objective-c代码确实改变了标签栏颜色,但相应的快速代码却没有受到损害,至少在模拟器上是这样.我做错了什么?

Fab*_*cci 9

问题是由于导航栏未在ViewWillAppear时间初始化,可能是因为IOS 9错误.我解决了这个问题,可选择访问它,如下所示:

self.navigationController?.navigationBar.barTintColor = barColor;
Run Code Online (Sandbox Code Playgroud)

从iOS7 +开始,此代码很好,因此不需要任何条件.