[ios2] ios7UI適配 【轉】

http://blog.csdn.net/toss156/article/details/11843873#commentshtml

 

 

(1)若是應用程序始終隱藏 status bar 那麼恭喜呢,你在UI上須要的改動不多不多。ios

(2)若是應用程序顯示status bar,能夠講status bar設置成黑色不透明 ,而後在UIViewController 中加入下面的判斷,git

  1. #define IOS7_OR_LATER   ( [[[UIDevice currentDevice] systemVersion] compare:@"7.0"] != NSOrderedAscending )  
  2.   
  3. #if __IPHONE_OS_VERSION_MAX_ALLOWED >= 70000  
  4.         if ( IOS7_OR_LATER )  
  5.         {  
  6.             self.edgesForExtendedLayout = UIRectEdgeNone;  
  7.             self.extendedLayoutIncludesOpaqueBars = NO;  
  8.             self.modalPresentationCapturesStatusBarAppearance = NO;  
  9.            self.navigationController.navigationBar.translucent = NO;
               self.tabBarController.tabBar.translucent = NO;
  10.         }  
  11. #endif  // #if __IPHONE_OS_VERSION_MAX_ALLOWED >= 70000  

 1.在appdeletage裏面 添加以下代碼:      if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7) {         [application setStatusBarStyle:UIStatusBarStyleLightContent];         self.window.clipsToBounds =YES;         self.window.frame =  CGRectMake(0,50,self.window.frame.size.width,self.window.frame.size.height-20);      }   2.在info.plist文件裏面 屬性:View controller-based status bar appearance  值設爲NO 接着運行程序,能夠看到StatusBar了github

(3)若是勾選了Hide during application lauch 的話,在IOS7 的設備上,是沒有問題的,xcode

   啓動完之後status bar 會從新出現的,可是在IOS7 一下的設備,須要在launch didfinish 裏面把status bar 顯示出來。app


(4)能夠經過設置view的背景顏色來改變 status bar 的顏色來搭配你的nav 條。ide

   (5)  有些地方肯能要對版本進行判斷,分別作不一樣的處理。佈局

   (6)  能夠用舊版的sdk來編譯,這樣在真機上仍是和原來同樣的效果。具體的方法能夠參考:http://github.kimziv.com/blog/2013/09/22/how-to-use-older-base-sdks-in-xcode5/動畫

 

 

使用視圖控制器(View Controller)
在iOS 7中,視圖控制器都是全屏的。iOS 7視圖控制器的外觀給人傳達了更細膩的控制感。特別是新的全屏外觀讓你能夠指定視圖的每一個邊緣的佈局。
 
視圖控制器接口 wantsFullScreenLayout已做廢。若是你像之前那樣地指定wantsFullScreenLayout = NO,iOS 7中視圖控制器會在將其內容顯示到一個意外的屏幕位置。
 
UIViewController提供了以下屬性來調整視圖控制器的外觀:
1.edgesForExtendedLayout 這個屬性屬於UIExtendedEdge類型,它能夠單獨指定矩形的四條邊,也能夠單獨指定、指定所有、所有不指定。
 
使用edgesForExtendedLayout指定視圖的哪條邊須要擴展,不用理會操做欄的透明度。這個屬性的默認值是UIRectEdgeAll。
 
2.extendedLayoutIncludesOpaqueBars:
若是你使用了不透明的操做欄,設置edgesForExtendedLayout的時候也請將 extendedLayoutIncludesOpaqueBars的值設置爲No(默認值是YES)。
 
3.automaticallyAdjustsScrollViewInsets 若是你不想讓scroll view的內容自動調整,將這個屬性設爲NO(默認值YES)。
 
iOS 7中,視圖控制器支持自定義視圖之間的過場動畫。另外,你可使用iOS 7的新API來支持過場動畫過程當中的用戶交互。更多信息請參考下面兩個文檔:《 UIViewController過場動畫協議參考》和《UIViewController過場交互協議參考》。
 
iOS 7容許視圖控制器在app運行過程當中改變系統狀態欄的樣式。開啓這個功能,請在Info.plist文件中添加鍵 UIViewControllerBasedStatusBarAppearance,並將值設爲YES。動態改變系統狀態欄的一個好方法是重寫 preferredStatusBarStyle方法,用一個動畫模塊來更新狀態欄外觀,並調用 setNeedsStatusBarAppearanceUpdate方 法。........................................
 
 
 
狀態欄能夠設置成半透明, 這是衆所周知的, 用UINavigationController,在頁面切換時, 若是你的子viewController的view是全屏的(480*320) 就會出現錯位, 表現是因此的子view會向下偏移了 20像素 

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleBlackOpaque];ui

self.navigationController.navigationBar.translucent = YES;

[self.navigationController.view setNeedsLayout];

self.wantsFullScreenLayout = YES;

相關文章
相關標籤/搜索