IOS 實現自訂的導覽列背景以及自訂色彩的狀態列(支援7.0以及低版本)

來源:互聯網
上載者:User

標籤: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以及低版本)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.