我们有一些仍在使用Autoresizing mask的遗留项目,一切都运行良好,直到iOS 11和iPhone X.随着安全区域布局指南的引入,什么是支持iPhone X的最佳解决方案? / p>
我们可以使用自动调整掩码转换所有接口以使用自动布局。考虑到动态添加和调整视图,这似乎是一项重大工作。
我们继续使用自动调整遮罩,但调整界面以添加iPhone X和iOS 11的嵌入边距。
答案 0 :(得分:5)
以下是我使用XIB文件和自动调整布局的遗留项目解决这个问题的方法:
这对我的项目非常有用,可以快速支持我的许多XIB文件中的安全区域,而无需从自动调整大小更改为自动布局。
韦斯
答案 1 :(得分:3)
第三种选择是在需要的地方使用autolayout,并使用autoresizing离开应用程序的其余部分。从XCode 8开始,您可以混合自动调整和自动布局。对于xib或storyboard中的每个视图,您可以选择设置自动调整遮罩或自动布局约束。在视图上使用一种规则会禁用该视图的另一种规则。但你可以在另一种观点上使用另一种。此链接包含更多信息:http://www.thomashanning.com/xcode-8-mixing-auto-autoresizing-masks/
如果您选择仅使用自动调整大小的掩码,则下面的辅助方法可以帮助您正确布局视图。
statusBarHeight 为您提供设备状态栏的高度。 safeAreaBottomMargin 为您提供iPhoneX主页按钮指示器的左下边距。
- (CGFloat) statusBarHeight {
return UIApplication.sharedApplication.statusBarFrame.size.height;
}
- (CGFloat) safeAreaBottomMargin {
if (@available(iOS 11.0, *)) {
UIWindow *window = UIApplication.sharedApplication.windows.firstObject;
return window.safeAreaLayoutGuide.owningView.frame.size.height - window.safeAreaLayoutGuide.layoutFrame.size.height - window.safeAreaLayoutGuide.layoutFrame.origin.y;
} else {
return 0;
}
}