如何在 LaunchStoryboard 中显示 CFBundleShortVersionString?

2024-04-22

有没有办法在我的 LaunchStoryboard 中将 CFBundleShortVersionString 显示为 UILabel 文本,而无需在每次递增时手动输入它?我知道如何在代码中执行此操作,但在显示 LaunchStoryboard 时无法运行代码。
可以通过 Xcode 变量吗?


众所周知,您不能将代码放入启动屏幕中。不幸的是,没有一种内置方法可以在启动屏幕中使用变量作为标签文本(类似于使用头文件中的值预处理 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.

现在,当您进行构建时,CFBundleShortVersionStringInfo.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

这个最终版本实际上更新了启动屏幕故事板文件。以前的版本是一个测试,以确保其他一切正常工作,而不会有破坏故事板的风险。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 LaunchStoryboard 中显示 CFBundleShortVersionString? 的相关文章

  • 领域:结果 和列表

    是否可以转换Results
  • WKWebview 中的 iCLoud 文档选择器关闭容器视图

    我有一个 WKWebview 加载基于 Web 的 UI 我希望用户能够从其 iCloud 文档上传文件 我已授予正确的权限 并且可以浏览 iCloud 文档 但是 当我选择文件或单击取消按钮时 文档选择器视图也会关闭 WKWebview
  • 制作已准备好开发人员 ID 的 macOS 安装程序包

    注意 这是为了OS X 安装程序 https en wikipedia org wiki Installer macOS 仅包 提交到的包Mac 应用商店 https en wikipedia org wiki Mac App Store遵
  • 在故事板中将 UITableView 的 rowHeight 设置为 UITableViewAutomaticDimension ?

    在 Xcode 6 中创建 iOS 8 应用程序时 如何设置 UITableViewrowHeight to UITableViewAutomaticDimension In WWDC 2014 第 226 场会议 表和集合视图中的新增功能
  • 在 IOS 中从 iPhone 删除资产(图片或视频)

    我正在开发一个 Iphone 应用程序 我可以使用 Assetslibrary 枚举资产并将它们加载到表视图中 用户可以在应用程序中删除一行 图片 视频 但如何直接从我的应用程序更新 Iphone 相册 否则 刷新时 表视图将重新加载之前删
  • Socket.io 400(错误请求)

    我的服务器上有这段代码 var express require express var routes require routes var user require routes user var http require http var
  • 具有动态警报正文的快速本地通知

    所以我可以创建一个像这样的本地通知 var localNotification UILocalNotification localNotification fireDate NSDate timeIntervalSinceNow 7 loc
  • 从 NavigationController 中删除 ViewController 后 AVPlayer 继续播放

    因此 我在项目中使用 ARC 当我添加 AVPlayerLayer 时 它工作得很好 但当我从 UINavigationItem 中弹出 UIViewController 时 视频继续在后台播放 有谁知道你会如何处理这个问题 这似乎是一件很
  • 启动深色或浅色模式的图像

    如何为深色模式和浅色模式选 择一组不同的启动图像 我有一个 LaunchImages 集 当应用程序启动时 会显示一个图像 对于浅色模式 这似乎不错 但是如果我尝试在设置为深色模式 iOS 13 的设备上打开我的应用程序 则该图像看起来很糟
  • 更改导航项(栏)的背景颜色

    有没有一种简单的方法可以更改视图顶部导航项的背景颜色 我有一个基于导航的应用程序 我只希望一个视图获得另一种背景颜色 我主要使用 IB 创建视图 我找到了以下解决方案 未测试 float r 10 float g 55 float b 13
  • 在 iOS 中使用 FB SDK 是否需要 Facebook 的成功审核?

    现在我需要使用Facebook SDK来自我的 iOS 应用程序中的 Facebook 所以我填写了有关我的应用程序的信息developer facebook com应用程序详细信息 但是 当我用我的设备测试我的应用程序时 我可以发布到 F
  • 将自定义图像设置为 UIBarButtonItem 但它不显示任何图像

    我想将自定义图像设置为 UIBarButtonItem 但它只显示周围的矩形框并且不显示实际图像 func setupBrowserToolbar let browser UIToolbar frame CGRect x 0 y 20 wi
  • 通过 renderInContext 定位要绘制的视图:

    我想画一个UIView在我目前的CGGraphicsContext 我画的是UIView via renderInContext 但它的位置不正确 始终位于左上角 我拥有所有的价值观UIView可用于绘制UIView CGRect fram
  • Swift 3 中的 JSON 解析

    有没有人能够找到一种在 Swift 3 中解析 JSON 文件的方法 我已经能够返回数据 但在将数据分解为特定字段时我没有成功 我会发布示例代码 但我已经尝试了很多不同的方法但没有成功 并且没有保存任何代码 我想要解析的基本格式是这样的 提
  • 使用 AVFoundation 裁剪 AVAsset 视频

    我在用AVCaptureMovieFileOutput录制一些视频 我使用显示预览层AVLayerVideoGravityResizeAspectFill稍微放大 我遇到的问题是最终的视频较大 包含预览期间不适合屏幕的额外图像 这是预览和生
  • 以编程方式从底部裁剪图像

    我正在开发自定义相机应用程序 一切进展顺利 但我在从底部裁剪图像时遇到了问题 即 裁剪后的图像与原始图像具有完全相同的宽度 但高度将为原始图像的 1 3 并且必须从底部开始 斯威夫特3解决方案 func cropBottomImage im
  • 如何使用 Core Graphics 在我的触摸位置绘制一个圆圈?

    新程序员来了 我在尝试使用 Core Graphics 在触摸位置周围绘制描边弧时遇到问题 我有绘制圆圈的方法工作正常 并且我已经测试并在点击屏幕时注册触摸 但是当我尝试在点击时调用绘制圆圈的方法时 我收到错误 CG ContextBlah
  • NSManagedObject 的 Xcode 9 构建问题:Date 与 NSDate

    Xcode 9 生成不同的代码Date模拟器与设备中实体的类型属性 我有codegen功能下Class set to category extension在核心数据中 直到 Xcode 8 3 最新 一切都工作正常 NSDate总是 下面是
  • iOS 视图控制器内存在被关闭后未释放

    当用户单击按钮时 它会显示一个带有两个视图控制器的新选项卡栏视图控制器 我是这样做的 ACLevelDownloadController dvc ACLevelDownloadController alloc initWithNibName
  • ios - Gamekit 的 GKOctree 未找到元素

    我正在尝试使用GKOctree https developer apple com documentation gameplaykit gkoctree用于高效检索 3D 空间中的对象 然而 以下代码似乎没有按预期工作 import Gam

随机推荐