在 iOS 中,如何根据环境(dev、hom、prod)更改启动屏幕图像?

Posted

技术标签:

【中文标题】在 iOS 中,如何根据环境(dev、hom、prod)更改启动屏幕图像?【英文标题】:In iOS, how to change launchscreen image according environment (dev, hom, prod)? 【发布时间】:2017-09-06 12:53:20 【问题描述】:

我有一个带有图像的启动屏幕,目前运行良好。

但现在我有 3 个模式:dev、hom 和 prod。

我想知道如何根据构建时选择的架构更改启动屏幕图像?

编辑

我有两个选择,但我不知道哪个最好:

选项 1:创建两个故事板并创建一个变量以在应用委托中设置正确故事板的名称。我将在 Info.plist 键(启动屏幕界面文件基本名称)中使用此变量。

选项 2:在 Launchscreen.storyboard 创建两个场景,并根据环境以编程方式设置正确的场景。

【问题讨论】:

我认为这是不可能的,因为 Xcode 用户界面没有提供这种类型的功能。 我认为您可以在默认启动屏幕之后添加自己的启动屏幕来显示您的图像 每个启动画面对应一个环境,所以我应该启动正确的启动画面。我有两个选择,但我不知道哪个最好。我编辑问题以显示这些选项。 有一个稍微棘手的方法可以做到这一点,即在构建阶段创建一个脚本,检查构建配置变量以在 Info.plist 中更新您想要的启动图像/屏幕的名称使用。 【参考方案1】:

使用目标,为每个环境添加一个目标,每个目标都有自己的 info.plist,你只需为每个目标设置不同的启动屏幕故事板,在相关的 info.plist 中设置一次,你就可以选择任何瞄准并运行。

【讨论】:

我创建了 3 个模式,每个模式用于一个环境(dev、hom、prod),因为我需要根据请求的环境加载一些变量。现在,我为给定的环境 (hom) 创建了一个新的 ImageAsset。当我请求构建此环境时如何配置加载正确的资产? 我必须创建两个故事板吗?不能有一个故事板而只更改图像?【参考方案2】:

您的第二个选项肯定行不通,因为您无法在 LaunchScreen 上执行任何代码,并且在执行任何代码之前会显示 LaunchScreen(即使在您的 AppDelegate 中),因此您无法在运行时更改 LaunchScreen 文件.

您的第一个选项几乎是正确的。实际上,一个可行的解决方案可能是为不同的启动屏幕创建多个故事板,但您需要在构建脚本中调整 Info.plist 文件,您也不能在运行时执行此操作。请注意,我还没有实际测试过这种方法,但理论上它应该可以工作。

【讨论】:

使用目标,为每个环境添加一个目标。 感谢@OlegSherman 的想法,这是一种更好的方法。猜猜您应该将其作为答案发布并为此归功于它。

以上是关于在 iOS 中,如何根据环境(dev、hom、prod)更改启动屏幕图像?的主要内容,如果未能解决你的问题,请参考以下文章

聊聊如何根据环境动态指定feign调用服务名

如何实现根据环境切换不同配置?

如何使 pr 受让人成为适当的环境变量?

ubuntu中tensorflow安装

TFS PR 搞砸了 Git 历史

iOS如何在当前工程中导入另一个工程文件