使用 Launch Screen.xib 模板的真正通用 iOS 启动屏幕?

Posted

技术标签:

【中文标题】使用 Launch Screen.xib 模板的真正通用 iOS 启动屏幕?【英文标题】:Truly universal iOS launch screen using Launch Screen.xib template? 【发布时间】:2015-07-12 03:06:10 【问题描述】:

所以,从 Xcode 6 开始,我们有了一个超级有用的新功能 Launch Screen 模板

根据它的描述,它可以帮助创建一个可以在每个设备/分辨率/方向上正常工作的启动屏幕,我们不再需要使用 Assets Catalog 为不同的分辨率制作一堆不同的屏幕。

但是...我没有找到任何有用的教程,说明如何实际使用它来制作单个启动屏幕,使用单个图像用于所有分辨率(仅适用于横向)。

我知道如何使用约束使 UI 元素以所有分辨率为中心,但我不知道如何使我的 UIImage 缩放以填充所有分辨率的屏幕高度。如果我只是调整 UIImage 的大小以填充在模拟指标中选择的当前屏幕尺寸 - 它只会填充那个,但不适用于其他屏幕尺寸..

谁能给我一个线索?如何使用此启动屏幕模板使 UIImage 为所有分辨率填充整个屏幕?

【问题讨论】:

启动屏幕 xib 使您不必使用图像。您基本上不想使用启动屏幕模板,而是想显示图像!? 是的,我只需要显示一个图像,但我不想为不同的分辨率制作不同的图像。例如,在 android 上,我只使用一张图像,但我以编程方式设置它,因此我可以控制它在不同分辨率下的显示方式。我认为 Launch Screen.xib 允许我做同样的事情,只是不写任何代码 启动屏幕可让您设计您的启动屏幕,就像您在应用中显示的任何常规视图一样。这为您提供了比仅图像更大的灵活性。但无论如何,您所问的肯定是可能的 - 请查看我的相应答案。 谢谢,您和 Steffen 的回答对我很有帮助。 【参考方案1】:

如果您只是想用每种屏幕尺寸的图像填充启动屏幕,您可以在 UIImageView 和超级视图之间使用前导、尾随、顶部和底部约束。所以:

第 1 步 将您的 UIImageView 添加到您的 LaunchScreen.xib 并设置它应该显示的任何图像。

第 2 步 选择您新添加的UIImageView,然后单击Interface Builder 右下角的“Pin”图标。

第 3 步 选择所有 4 条边,并将常量设置为 0。这可确保您的 UIImageView 在每条边上都有 0 点到超级视图的空间。

看起来像这样:

也就是说,您应该考虑这是否可行。将 .xib 文件用作启动屏幕的想法实际上是为了取代必须显示全屏启动图像的需要。相反,请考虑将您的启动图像包含的任何元素放在界面构建器中。另请记住,您(很遗憾)无法将任何代码与您的启动屏幕 .xib 文件绑定在一起。

【讨论】:

【参考方案2】:

您需要添加UIImageView 以查看您的 xib 文件并设置约束以填充整个屏幕,例如左、右、上、下间距等于 0。(您已经提到可以这样做,因此不再对此进行说明)

然后你检查你的UIImageView,设置你想要显示的图像并选择作为视图modeAspect Fill

这样您的UIImageView 会获取图像并将其放大,在填充整个内容的同时保持其纵横比。

【讨论】:

以上是关于使用 Launch Screen.xib 模板的真正通用 iOS 启动屏幕?的主要内容,如果未能解决你的问题,请参考以下文章

XCode 6.0.1 - xmlParseEntityRef:Launch Screen.xib 上没有名称

json RNT VSCode launch.json模板

黑屏显示而不是 LaunchScreen.xib

如何在 Freemarker 模板中访问 Spring 应用程序属性?

如何在 Freemarker 模板中访问 Spring 应用程序属性?

Amazon 启动模板 - 更新的 AMI