我有一个现有的应用程序,基本上是一个购物清单应用程序,我正在尝试添加一些甜蜜的 SwiftUI 爱。
我的问题是实时预览更新不起作用 - 警告“自动预览更新暂停”不断显示。我点击了恢复按钮,它构建了应用程序,它显示了当前视图,然后立即再次显示该警告。如果不使用恢复按钮,我永远无法看到画布中反映的代码的更改。
这发生在 Xcode 11.1 和 11.2 beta 2 中。我在 SO 上几乎找不到其他任何提及,并且在 Apple 的开发论坛上有一个帖子没有答案。
Kac*_*bek 41
如果您在构建阶段中有自定义运行脚本阶段并且您不想(或不能)删除它们,请尝试选中复选框“仅在安装时运行脚本”。
Vas*_*ior 28
所有给定答案的问题在于,如果您想让预览工作,您需要在调试模式下选中或取消选中您的脚本。
这是使用环境变量的便捷替代方法。
这真的很简单
将脚本的所有内容嵌入if
到检查我们是否正在使用预览的语句中。如果我们处于预览状态,则不要运行脚本的内容,否则,让我们运行它。而且您不必仅为发布版本而牺牲您的脚本。
这是模板:
if [ $ENABLE_PREVIEWS == "NO" ]
then
# your code to execute here
else
echo "Skipping the script because of preview mode"
fi
Run Code Online (Sandbox Code Playgroud)
下面是我用来提高构建版本号的完整示例
# xcode-build-bump.sh
# @desc Auto-increment the build number every time the project is run.
# @usage
# 1. Select: your Target in Xcode
# 2. Select: Build Phases Tab
# 3. Select: Add Build Phase -> Add Run Script
# 4. Paste code below in to new "Run Script" section
# 5. Drag the "Run Script" below "Link Binaries With Libraries"
# 6. Insure that your starting build number is set to a whole integer and not a float (e.g. 1, not 1.0)
if [ $ENABLE_PREVIEWS == "NO" ]
then
buildNumber=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "${PROJECT_DIR}/${INFOPLIST_FILE}")
buildNumber=$(($buildNumber + 1))
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildNumber" "${PROJECT_DIR}/${INFOPLIST_FILE}"
else
echo "Skipping Bump of version"
echo $ENABLE_PREVIEWS
fi
Run Code Online (Sandbox Code Playgroud)
Bri*_*n M 11
我最终向 Apple 发送了反馈,他们回复了一个修复程序。我在目标中有一个构建脚本,它会自动增加构建号。如果我删除该脚本,则预览会按预期工作。
因此,如果您遇到此问题,请删除 Target -> Build Phases -> Run Script 中的任何内容,然后重试。画布预览应按您的预期更新。
对我来说,当我使用 Legacy Build System 时,Canvas 不起作用。
你可以通过改变它,
文件 -> 项目设置(或工作区设置) -> 构建系统 -> 选择“新建构建系统(默认)”。
正如它所说,它是默认选项。如果出于任何原因选择了旧版构建系统,Canvas 将无法工作。
2020 年 6 月 30 日编辑:我们不再有Legacy Build System
Xcode 12 测试版。
归档时间: |
|
查看次数: |
7496 次 |
最近记录: |