自适应启动屏幕故事板:有没有办法区分iPad方向?

Sea*_*anR 12 ios adaptive-ui

我正在研究使用故事板为我的应用程序启动图像.该应用程序始终使用大型照片作为启动图像,该照片也用作第一个视图的背景.但是,当应用程序在iPad上以横向方式启动时,图像会有所不同.

那么在使用自适应故事板作为发布屏幕时,有没有办法区分纵向iPad和横向iPad?因为它是一个启动屏幕,我不能运行任何代码,它必须完全通过故事板完成.

Joc*_*hen 4

我找到了一种使用间隔视图的解决方案,将正确的图像放置在可见区域中,并将另一个图像移出屏幕(如David H所建议的)。

\n\n

您无法为不同的屏幕尺寸(iPhone 4、iPhone X...)提供不同的图像,但如果您想要为 iPhone 和 iPad 提供不同的图像,以及为纵向和横向提供不同的图像,此解决方案适合您。

\n\n

如果您想尝试一下,我在 github 上创建了一个示例项目。\n它适用于 iPad 和 iPhone。

\n\n

Interface Builder 中的约束

\n\n

重要的限制是

\n\n
PortraitSpacer.width \xe2\x89\xa4 5 \xc3\x97 view.width\nPortraitSpacer.width \xe2\x89\xa4 5 \xc3\x97 view.height\n\nLandscapeSpacer.width \xe2\x89\xa5 5 \xc3\x97 view.width\nLandscapeSpacer.width \xe2\x89\xa5 5 \xc3\x97 view.height\n\nPositionSpacer.width = 5 \xc3\x97 view.width\n
Run Code Online (Sandbox Code Playgroud)\n\n

哪里view.widthview.height是主视图的宽度和高度。

\n\n

PortraitSpacer纵向图像的位置为,5 \xc3\x97 min(view.width, view.height)横向LandscapeSpacer图像的位置为5 \xc3\x97 max(view.width, view.height),\n的PositionSpacer宽度与纵向模式下的宽度相同,并且与横向模式下的PortraitSpacer宽度相同。LandscapeSpacer

\n\n

我们将所有内容乘以 5,这样两个图像就不会重叠。这适用于满足以下条件的所有设备

\n\n
5 \xc3\x97 min(view.width, view.height) + max(view.width, view.height) \xe2\x89\xa4 5 \xc3\x97 max(view.width, view.height)\n
Run Code Online (Sandbox Code Playgroud)\n\n

在横向模式下,这意味着

\n\n
5 / 4 \xe2\x89\xa4 view.width / view.height\n
Run Code Online (Sandbox Code Playgroud)\n\n

目前所有设备都是如此:iPad 的纵横比最低,为 4:3,但仍大于 5:4。

\n\n

然后,您当然可以在资产目录中配置每个设备(iPhone、iPad)的图像。

\n