控制iOS 7中的狀態列

來源:互聯網
上載者:User

蘋果終於發布了iOS 7正式版,大批的使用者都已經紛紛進行了升級。如果App是由Xcode 4.6或者更早版本產生,iOS 7系統會使用相容模式運行該App,以便儘可能保持原有外觀。但是,當使用Xcode 5重新編譯App原始碼時,此時會使用iOS 7 SDK來進行編譯連結。(注意在使用Xcode 5開啟舊項目之前備份項目原始碼,因為Xcode 5會升級項目中的資源檔,且無法再使用舊版本的Xcode開啟。)由於iOS 7 SDK較早期版本的SDK改動較大,因此App的介面也會出現種種問題,其中最明顯的問題就是狀態列與導覽列的顯示問題。

iOS 6:

 

 

 

 

iOS7:

 

 

 

當未使用導覽列時,上面的對比了在iOS 6與iOS 7上的顯示情況。iOS 6中的狀態列不透明,視圖控制器的主視圖原點在狀態列下面。而iOS 7的狀態列背景色變為透明色,視圖控制器的主視圖原點在螢幕左上方,即狀態列顯示在主視圖之上,透過狀態列可以顯示視圖的內容。

iOS 7提供了兩種狀態列的樣式,用於控制狀態列文字的顏色。

typedef NS_ENUM(NSInteger, UIStatusBarStyle){    UIStatusBarStyleDefault                                     = 0, // Dark content, for use on light backgrounds    UIStatusBarStyleLightContent     NS_ENUM_AVAILABLE_IOS(7_0) = 1, // Light content, for use on dark backgrounds        UIStatusBarStyleBlackTranslucent NS_ENUM_DEPRECATED_IOS(2_0, 7_0, "Use UIStatusBarStyleLightContent") = 1,    UIStatusBarStyleBlackOpaque      NS_ENUM_DEPRECATED_IOS(2_0, 7_0, "Use UIStatusBarStyleLightContent") = 2,};

 

 

 

 

 

 

如果狀態列背景為淺色,應選用黑色字樣式(UIStatusBarStyleLightContent);如果背景為深色,則選用白色字樣式(UIStatusBarStyleDefault,預設值)。

iOS 7的UIViewController類裡添加了幾個新的方法,用於控制狀態列。

// These methods control the attributes of the status bar when this view controller is shown. They can be overridden in view controller subclasses to return the desired status bar attributes.- (UIStatusBarStyle)preferredStatusBarStyle NS_AVAILABLE_IOS(7_0); // Defaults to UIStatusBarStyleDefault- (BOOL)prefersStatusBarHidden NS_AVAILABLE_IOS(7_0); // Defaults to NO// This should be called whenever the return values for the view controller's status bar attributes have changed. If it is called from within an animation block, the changes will be animated along with the rest of the animation block.- (void)setNeedsStatusBarAppearanceUpdate NS_AVAILABLE_IOS(7_0);

preferredStatusBarStyle方法用於指定當前視圖控制器的狀態列樣式,prefersStatusBarHidden方法指定是否隱藏狀態列。當修改了狀態列的字型顏色、顯示或隱藏時,調用setNeedsStatusBarAppearanceUpdate方法告知系統需要重新整理狀態列。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.