为啥在启动图像中选择“iOS 8.0 及更高版本”并为此新图像后,iOS 应用程序的屏幕尺寸会发生变化?

Posted

技术标签:

【中文标题】为啥在启动图像中选择“iOS 8.0 及更高版本”并为此新图像后,iOS 应用程序的屏幕尺寸会发生变化?【英文标题】:why iOS app's screen size can change after I select "iOS 8.0 and Later" in Launch Image and new the image for that?为什么在启动图像中选择“iOS 8.0 及更高版本”并为此新图像后,iOS 应用程序的屏幕尺寸会发生变化? 【发布时间】:2020-04-01 10:25:43 【问题描述】:

起初,该应用在 iPhone X 和 iPhone 11 的顶部和底部出现黑边 我想让黑边消失,所以我尝试在mainViewController.xib中选择“Use Safe Area Layout Guides”,还是不行。

然后我尝试在 mainViewController 的 viewdidLoad 中更改视图大小或视图锚点,但所有这些动作都不起作用。 最后,当我打开 images.xcassets 并选择 Launch Image -> Show the Attributes inspector -> ios 8.0 and later -> iPhone -> Portrait。然后xcode上出现了三个block,分别是iPhone Xs Max、iPhone XR、iPhone X/ iPhone Xs。 我根据分辨率用图片填充这些块。 魔法!当我重建应用程序时,黑边消失了。 但是为什么!?

我用的是xcode 11.3.1,用的是iPhone 11 Pro()的模拟器

【问题讨论】:

【参考方案1】:

如果应用不包含新设备屏幕尺寸的启动图像,则 iOS 会假定应用是在这些设备发布之前编写的,并将可用屏幕区域减少到旧设备的可用屏幕区域作为向后兼容的解决方案。

当您包含所有启动图像大小时,此向后兼容性模式将被停用。

但是,您应该采用启动故事板,而不是启动图像,因为这样可以更轻松地支持所有屏幕尺寸,Apple 从 7 月起将要求这样做。

【讨论】:

感谢您的回复!这个规则有参考吗?像苹果的文件?我尝试搜索但一无所获.. 参见“全屏支持”下的this page。如果我记得的话,4 月 30 日的截止日期已延长至 6 月 30 日 对不起,我没有说清楚。我的意思是“应用程序不包含新设备屏幕尺寸的启动图像,然后 iOS 假定该应用程序是在这些设备发布之前编写的,并将可用屏幕区域减少到旧设备的可用屏幕区域作为向后兼容解决方案”的规则 但可以看出我必须更改静态图像才能启动故事板哈哈。让我先和我的主管讨论 哦,对不起。从记忆中,信箱行为是在 iPhone 5 发布时出现的,所以 5 年多以前。大约在那个时候,它可能在 WWDC 会议中被提及。

以上是关于为啥在启动图像中选择“iOS 8.0 及更高版本”并为此新图像后,iOS 应用程序的屏幕尺寸会发生变化?的主要内容,如果未能解决你的问题,请参考以下文章

registerForRemoteNotificationTypes:iOS 8.0及更高版本不支持

嵌入式 dylibs/frameworks 仅支持 iOS 8.0 及更高版本的架构 armv7

仅 iOS 8.0 及更高版本(@rpath/libswift_stdlib_core.dylib)支持可重定位的 dylib(例如嵌入式框架)

为啥Android Studio在选择图像后改变图像旋转

为啥 iPad 默认启动图像方向不起作用(iOS 5)?

为啥我裁剪的图像很小?