如何在 info.plist 文件中用用户定义的设置替换系统定义的设置?

How to replace system defined setting with user defined setting within info.plist file?

info.plist 中有系统定义的设置:查看基于控制器的状态栏外观

这是一个灰色的布尔选项。

但是在我的项目中我使用了很多目标并且需要为每个目标定义这个设置。所以,我这样定义 User Defined Setting

但是当我尝试用 $(CUSTOM_STATUS_BAR_APPEARANCE_ENABLED) 替换 ON 时它不起作用,因为类型是布尔值。如果我像这样在 plist 文件中强制更改 属性:

<key>UIViewControllerBasedStatusBarAppearance</key>
<string>$(CUSTOM_STATUS_BAR_APPEARANCE_ENABLED)</string>

还是不行。为什么?我怎样才能做到这一点 而不 创建单独的 plist?

您可以尝试使用自定义 运行 脚本 - 在构建时脚本可以更改 Info.plist 中的 bool 值 -> 在您的条件下它应该像:

INFOPLIST="${PRODUCT_SETTINGS_PATH}"
/usr/libexec/PlistBuddy -c "Set :UIViewControllerBasedStatusBarAppearance NO" "${INFOPLIST}"

希望对您有所帮助!