在 SwiftUI 中启动屏幕图像拉伸

问题描述 投票:0回答:7

我希望我能得到一些帮助来解释为什么会发生这种情况。我一直致力于将我一直在学习/构建的应用程序从 UIKit 切换到 SwitfUI,因为这似乎是未来......而且学习起来很有趣。

我已经有了带有背景和图像的 plist 设置

当模拟器打开或清除并擦除模拟器时我第一次运行它是这样的:

但是,每次运行应用程序后,图像都会拉伸。

当我在手机上尝试时,它似乎每次都会拉伸。我不确定这里发生了什么。只是 SwiftUI 需要更多工作还是我缺少某个设置?

ios xcode swiftui launch-screen
7个回答
24
投票

这似乎是一个 SwiftUI Bug,仍未修复。解决此错误的唯一方法是返回故事板。

您必须创建启动屏幕故事板并将其链接到您的项目。

这样做:

  • 创建一个新文件(cmd + n)并选择启动屏幕
  • 在新故事板中自定义启动屏幕(不要使用 SVG 格式的图像)
  • 转到项目设置 ->“常规”并选择启动屏幕文件作为“启动屏幕文件”,这会在 info.plist 中创建一个新条目
  • 删除 info.plist 中旧的 SwiftUI 启动屏幕条目

6
投票

我会提到这一点,因为它在技术上对我有用。

关闭设备。再次打开它。重新安装应用程序。启动屏幕不再拉伸!

这是一种奇怪的行为,它让我想知道这是否是 iOS 的错误,而不是 swiftui 的错误。

我从这篇文章的评论中得到了这个答案。


4
投票

如果您在启动屏幕上使用

.svg
图像(适用于设备)。

  1. 在资源中,选择图像(在列表中),然后选择图像(详细信息)。
  2. 显示检查器(右上角的按钮)。
  3. 在调整大小选项中,选中保留矢量数据。
  4. 在“比例”选项中,选择“单一比例”。

我希望它对这个反复出现的问题有用,即使在今天使用 Xcode 14 也没有真正解决。


2
投票

当@1x为200x200px时,将图像大小调整为@1x、@2x和@3x版本。

然后上传到Assets文件夹并更改info.plist

Image Name

这对我有用。


0
投票

我已经通过更改 SVG 尺寸解决了同样的问题。

  1. 从资源中选择启动图像,然后按“空格”按钮。
  2. 使用子行文本打开。
  3. 更改宽度和高度(我以 px 为单位给出 iPhone 12 pro 的尺寸,最初是 100%)

这可能有帮助:

  1. 在属性检查器中选中“保留矢量数据”
  2. 在音阶中选择“单音阶”

它对我有用。


0
投票

0
投票

或者我们可以使用启动屏幕界面,将下面的键和值添加到您的 plist 中。

只需添加 钥匙

Launch screen interface file base name or UILaunchStoryboardName

价值

Our Launch Screen Name

示例

使用 LaunchScreen Storyboard 也会扩大我们定制的限制。

© www.soinside.com 2019 - 2024. All rights reserved.