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代码确实改变了标签栏颜色,但相应的快速代码却没有受到损害,至少在模拟器上是这样.我做错了什么?
问题是由于导航栏未在ViewWillAppear时间初始化,可能是因为IOS 9错误.我解决了这个问题,可选择访问它,如下所示:
self.navigationController?.navigationBar.barTintColor = barColor;
Run Code Online (Sandbox Code Playgroud)
从iOS7 +开始,此代码很好,因此不需要任何条件.
| 归档时间: |
|
| 查看次数: |
4100 次 |
| 最近记录: |