SafeArea在iOS的11:如何不safeArea从代码在Objective-C

问题描述:

在我的项目上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

安全区域是替代顶部&底部布局和苹果的提供更多的细节在此象下面这样:

代表你的视图的一部分的布局的指南,是 视野开阔酒吧和其它内容。在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

在我的项目中没有任何故事板,并且我无法从设置面板禁用此安全区域... –