標籤:style blog http color io os ar for sp
為尊重文章原作者,轉載務必註明原文地址:http://www.cnblogs.com/wt616/p/3784717.html
先看:
在自訂導覽列背景時,可能會遇到以下一些問題:
1、當設定導覽列背景後,狀態列的顏色也會跟著一起改變掉,這可能不是你說希望看到的
2、IOS7以上的版本和低版本顯示出來的導覽列高度位置有差別,這個差別就是狀態列的高度20,為了相容低版本,必須統一
解決思路:
1、不正常的是狀態列的背景也一起變了,而狀態列的文字是可以通過其他API去設定的:如 [[UIApplicationsharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
2、文字是附於背景上方的,因此考慮在這之間插入一個矩形顏色塊(甚至圖片也可以)
3、根據這種思路,第二種思路也隨之產生,就是製作出20+44=64高度的圖片,作為導覽列背景圖,其中上方20為狀態列的顏色。
4、本文實現第一種思路,並且模擬器和真機以及IOS6,7均已驗證可行
//7.0以上版本通過一句代碼解決高度上升問題
if ([[[UIDevicecurrentDevice] systemVersion] doubleValue]>=7.0) {
self.edgesForExtendedLayout=UIRectEdgeNone;
}
//建立一個高20的假狀態列背景
UIView *statusBarView = [[UIView alloc] initWithFrame:CGRectMake(0, -20, 320, 20)];
//將它的顏色設定成你所需要的,這裡我選擇了黑色,表示我很沉穩
statusBarView.backgroundColor=[UIColor blackColor];
//這裡我的思路是:之前不理想的狀態是狀態列顏色也變成了導覽列的顏色,但根據這種情況,反而協助我判斷出此時的狀態列也是導覽列的一部分,而狀態列文字浮於上方,因此理論上直接在導覽列上添加一個subview就是他們中間的那一層了。
//推得這樣的代碼:
[self.navigationController.navigationBar addSubview:statusBarView];
//修改導覽列文字顏色,這裡我選擇白色,表示我很純潔
[[UIApplicationsharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
//設定導覽列的背景圖片
[self.navigationController.navigationBarsetBackgroundImage:[UIImageimageNamed:@"bg.jpg"] forBarMetrics:UIBarMetricsDefault];
IOS 實現自訂的導覽列背景以及自訂色彩的狀態列(支援7.0以及低版本)