2013-09-21 49 views
2

我有一個應用程序使用stroryboards,導航控制器和自動佈局在io6下運行良好,我希望啓用在ios6和ios7下運行。在ios6導航/底部條形圖下轉換爲ios7流的視圖

我已經使用xcode5轉換了應用程序,它現在可以在ios7下正常運行,但是當我在ios 6下運行它時,導航欄和底部欄現在是透明的(它們本來不是透明的)並且視圖在它們下面流動 - 隱藏一些控件。即使我將ios7應用程序轉換爲不在這些小節下方流動(通過將「延伸邊緣」/「下方酒吧」和「下方酒吧」下的「關閉」),此操作仍然存在。

我已經解決了這個問題,它允許ios7在條形圖下面傳遞視圖(蘋果公司希望我們做的任何事情),然後將以下代碼添加到第一個視圖控制器的viewDidLoad方法中,以強制ios6不使用透明酒吧。

if (floor(NSFoundationVersionNumber) <= NSFoundationVersionNumber_iOS_6_1) { 
    self.navigationController.navigationBar.barStyle = UIBarStyleBlackOpaque; 
    self.navigationController.toolbar.barStyle = UIBarStyleBlackOpaque; 
} 

這似乎工作,但我不明白爲什麼我需要這樣做,我擔心我失去了一些根本。

編輯:我對這個'解決方案'的另一個問題是ios6下的xcode5預覽版不能準確反映版面,因爲它在ios 6下的模擬器下運行(我沒有真正的ios6設備方便現在測試它)。 xcode5中的新預覽功能似乎假定ios 6不會在頂部和底部條紋下方流動視圖,因此會將控件一起壓扁以適合可用空間。

阿里

回答

4

不管操作系統版本試試這個(它最近解決了我類似的問題):

self.navigationController.navigationBar.translucent = NO; 
self.navigationController.toolbar.translucent = NO; 
+0

OK,我可以看到這是一個有點整潔。然而,我仍然好奇爲什麼我們必須這樣做?這是xcode5中的錯誤嗎? –

+0

也許是它的一個bug,但我寧願說它是那些未定義的行爲之一,在以前的iOS版本中以相同的方式實現,並在iOS 7中突然更改。 –

0

我不知道這是否會幫助你,但還有另一種選擇你情況:嘗試使用__IPHONE_6_1宏。我有一個例子:

if(__IPHONE_7_0) { 
    NSLog(@"Hello"); 
} 

所以你可以只是做

if(__IPHONE_OS_VERSION_MAX_ALLOWED <= __IPHONE_6_1) { 
     self.navigationController.navigationBar.translucent = NO; 
     self.navigationController.toolbar.translucent = NO; 
} 

希望這可以幫助你

相關問題