2017-09-25 76 views
0

在我的項目上Objective-C mainScreen使用自定義NavigationBar添加視圖定製的導航欄主屏幕上(從代碼中創建):SafeArea在iOS的11:如何不safeArea從代碼在Objective-C

mainNavigationController = [[NavigationController alloc] initWithRootViewController:mainMenuViewController]; 
mainNavigationController.navigationBar.barStyle = UIBarStyleBlackTranslucent; 
mainNavigationController.delegate = self; 
mainNavigationController.navigationBar.tintColor = [UIColor whiteColor]; 

UIWindow* window = self.window; 
window.backgroundColor = [UIColor whiteColor]; 
window.rootViewController = mainNavigationController; 
[window makeKeyAndVisible]; 

我改變自我.view像大小[UIScreen mainScreen] .applicationFrame]:

UIView* mainView = [[[MainViewControllerView alloc] initWithFrame:[UIScreen mainScreen].applicationFrame] autorelease]; 
self.view = mainView; 

在mainScreenView我添加滾動視圖:

scrollView = [[UIScrollView alloc] initWithFrame:self.bounds]; 
scrollView.autoresizesSubviews = YES; 
scrollView.autoresizingMask = UIViewAutoresizingNone; 
scrollView.backgroundColor = [UIColor clearColor]; 
scrollView.bounces = NO; 

而且裏面添加滾動視圖一些子視圖:

[scrollView addSubview:myLogoView]; 
[scrollView addSubview:littleScrollView]; 
[scrollView addSubview:firstButton]; 
[scrollView addSubview:secondButton]; 
[scrollView addSubview:thirdButton]; 
[scrollView addSubview:fouthButton]; 
[scrollView addSubview:fifthButton]; 
[scrollView addSubview:sixthButton]; 
[scrollView addSubview:seventhButton]; 
[scrollView addSubview:activityIndicatorView]; 

https://www.dropbox.com/s/ttrkolgnch80kr9/safeArea.png?dl=0

如果在Xcode 8和iOS < = 10,所有觀點的地方正確的mainScreen(myLogoView地方忽略自定義導航欄的大小,並有座標Yi == 20.0在設備屏幕的絕對值座標), ,但如果使用XCode 9和iOS 11 myLogoView有我的自定義navigationBar(高度== 44)下的位置在設備屏幕的絕對值座標myLogoView Y == 64.0,在iOS 10 (在xCode9下)一切正常 - adde主屏幕上的d視圖放置在屏幕的起始座標上,忽略自定義的高度NavigationBar

在swift和故事板我知道它如何在iOS11中修復容易刪除safeArea頂線,但如何從代碼中刪除safeArea Objective-C

如何解決這個問題?在IOS 11

回答

0

安全區域是替代頂部&底部佈局和蘋果的提供更多的細節在此象下面這樣:

代表你的視圖的一部分的佈局的指南,是 視野開闊酒吧和其它內容。在iOS 11中,Apple會棄用 頂部和底部佈局指南,並使用單個安全區域佈局指南 替換它們。

因此,在這個現在頂部&底部佈局的基礎替換單安全區但阿恩如果你不使用默認的導航欄,所以你可以在故事板禁用安全區域如下圖所示:

enter image description here

您可以取消選中安全區域,它將恢復到頂部&底部佈局。

參考之前&取消選擇安全區域後:

之前或默認:

enter image description here

取消選擇安全區域或舊的行爲:

enter image description here

希望這將有助於瞭解與頂部&底部佈局相關的新iOS 11更新,並根據此佈局更改更改您的代碼。

而且,這裏是一個很好的博客解釋更多的安全區域佈局:Safe area

+0

很抱歉,但我所說的問題,知道如何從故事板和斯威夫特做。有興趣的是Objective-c –

+0

,但是如果你從storyboard中禁用安全區域,它會解決你的問題b'cus,因爲你提到安全區域正在爲你的自定義導航欄創建問題,所以我不這樣認爲後禁用這不需要改變任何東西都與iOS 10相同。 – CodeChanger

+0

在我的項目中沒有任何故事板,並且我無法從設置面板禁用此安全區域... –