我的旧iOS应用程序在所有iPhone版本(除了iPhone X模型)中都运行良好。我遇到了iPhone X模拟器,看到一些屏幕在iPhone X屏幕底部重叠。我的应用程序--所有的uiview控制器--都是通过编程创建的,而不是由故事板设计的。因此,在所有视图控制器中,我使用(self.view.frame)来查找其帧大小。在iPhoneX中,在故事板中有安全防护区可供设计。但是如何计算运行时的安全防护区域。在搜索谷歌时,它给出了一些样本,以找到安全防护区域,这是iOS11的支持。但我想在ios9上运行我的应用程序?我的项目中有很多控制器..。有人能告诉我做这件事最简单的方法吗?
发布于 2017-11-08 23:36:26
将iPhone X布局问题的运行时修复添加到旧应用程序(预编故事板手动布局)(具有旧的预11部署目标)的一种可能方法是添加类似于以下内容的目标C代码:
CGRect r0 = self.view.frame;
CGRect r1 = r0;
if (@available(iOS 11.0, *)) {
r1 = self.view.safeAreaLayoutGuide.layoutFrame;
}
if ( r1.size.height < (r0.size.height - 20.0) ) {
// fix top and bottom view overlap outside safe area here
}
在每个UIViewController的viewWillLayoutSubviews方法中。
@available检查将使此代码在iOS 11之前的版本下安全使用。
https://stackoverflow.com/questions/47131871
复制相似问题