众所周知,您不能将代码放入启动屏幕中。不幸的是,没有一种内置方法可以在启动屏幕中使用变量作为标签文本(类似于使用头文件中的值预处理 Info.plist 的方式)。
实现您的目标的唯一选择是编写您自己的脚本来更新 LaunchScreen.storyboard 文件并将该脚本添加为您的目标的自定义构建阶段。
为了使这更容易,我将设置您的目标以使用 Info.plist 的预处理器文件。一旦完成并开始工作,您现在就有了一个单独且简单的头文件,您可以在脚本中查询以处理 LaunchScreen.storyboard 文件。
这是一个完整的解决方案:
创建一个名为Info.h
并将其添加到项目的根目录中。
添加以下行:
#define APP_VERSION 2.6 // Update this version as needed
现在在 Xcode 中选择项目的目标并转到“常规”选项卡。将版本值从您拥有的任何数字更改为APP_VERSION
.
现在选择构建设置选项卡。搜索于Info
。在“包装”部分下,设置Preprocess Info.plist File
to Yes
。还设置Info.plist preprocessing Prefix File
to Info.h
.
现在,当您进行构建时,CFBundleShortVersionString
Info.plist 中的值将设置为 Info.h 文件中的值。
要更新启动屏幕文件中的标签以匹配,请执行以下操作:
选择您的启动屏幕故事板,然后选择将包含版本号的标签。显示身份检查器窗格。进入APP_VERSION
到标签属性中。如果您现在查看情节提要文件,标签的 XML 现在将显示userLabel
属性值为APP_VERSION
.
返回项目目标并选择“构建阶段”选项卡。单击 + 图标并选择添加新的运行脚本阶段。将新阶段重命名为有用的名称,例如“更新启动版本”。然后将新阶段拖到现有的“复制捆绑资源”阶段之前。
现在打开新的“更新启动版本”阶段。进入/bin/bash
在壳牌领域。将以下代码复制并粘贴到阶段中:
VERSION=`cat Info.h | grep APP_VERSION | cut -f3 -d' '`
sed -e "/userLabel=\"APP_VERSION\"/s/text=\"[^\"]*\"/text=\"$VERSION\"/" Storyboard.storyboard > tmp.storyboard
现在进行干净的构建。这是此时的一个测试。看一下tmp.storyboard
并确保它看起来正确并且应用程序版本的标签显示正确的版本。
一旦工作正常,将上面的代码更新为:
VERSION=`cat Info.h | grep APP_VERSION | cut -f3 -d' '`
sed -i bak -e "/userLabel=\"APP_VERSION\"/s/text=\"[^\"]*\"/text=\"$VERSION\"/" Storyboard.storyboard
这个最终版本实际上更新了启动屏幕故事板文件。以前的版本是一个测试,以确保其他一切正常工作,而不会有破坏故事板的风险。