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会弃用 顶部和底部布局指南,并使用单个安全区域布局指南 替换它们。
因此,在这个现在顶部&底部布局的基础替换单安全区但阿恩如果你不使用默认的导航栏,所以你可以在故事板禁用安全区域如下图所示:
您可以取消选中安全区域,它将恢复到顶部&底部布局。
参考之前&取消选择安全区域后:
之前或默认:
取消选择安全区域或旧的行为:
希望这将有助于了解与顶部&底部布局相关的新iOS 11更新,并根据此布局更改更改您的代码。
而且,这里是一个很好的博客解释更多的安全区域布局:Safe area
很抱歉,但我所说的问题,知道如何从故事板和斯威夫特做。有兴趣的是Objective-c –
,但是如果你从storyboard中禁用安全区域,它会解决你的问题b'cus,因为你提到安全区域正在为你的自定义导航栏创建问题,所以我不这样认为后禁用这不需要改变任何东西都与iOS 10相同。 – CodeChanger
在我的项目中没有任何故事板,并且我无法从设置面板禁用此安全区域... –