ios - 有没有办法在 iOS 应用程序中实现 2 个以上的主题(外观)?
问题描述
在 iOS 中,我想让用户在应用程序中选择不同的主题。
例如,以下语句将根据所选主题解析为不同的颜色代码。
UIColor(named: "greyNoteColor")!
但是,iOS 仅提供 2 种不同的主题(外观) - Any Appearance或Dark Appearance
我想知道,有没有办法在 iOS 应用程序中支持超过 2 个主题?
例如,在 Android 中,我可以使用以下策略支持 2 个以上的主题。
<style name="Theme.WeNote.Red" parent="@style/Theme.WeNote.Base.Brown">
<item name="greyNoteColor">#040404</item>
</style>
<style name="Theme.WeNote.Purple" parent="@style/Theme.WeNote.Base.Brown">
<item name="greyNoteColor">#030303</item>
</style>
<style name="Theme.WeNote.Blue" parent="@style/Theme.WeNote.Base.Brown">
<item name="greyNoteColor">#020202</item>
</style>
<style name="Theme.WeNote.Dark" parent="@style/Theme.AppCompat">
<item name="greyNoteColor">#010101</item>
</style>
setTheme(R.style.Theme_WeNote_Red)
TypedValue typedValue = new TypedValue();
Resources.Theme theme = getTheme();
theme.resolveAttribute(R.attr.greyNoteColor, typedValue, true);
//
// Will resolve to color code #040404
//
int greyNoteColor = typedValue.data;
我想知道,我们如何才能实现与 iOS 应用程序类似的行为?
谢谢。
解决方案
您可以使用以下方法通过代码执行此操作:
public static let myColor: UIColor = {
let theme = UserDefaults.standard.string(forKey: "theme")
if (theme == "RED") {
return UIColor.red
} else if (theme == "GREEN") {
return UIColor.green
}
// any other cases
return UIColor.white
}()
推荐阅读
- html - 为什么我的 HTML 文件没有读取我的 CSS 文件?
- node.js - 如何启用禁用的密码 OpenSSL
- apache-kafka - kafka流中的不均匀分区分配
- node.js - 如何在 MERN 中使用 multer 上传多个文件输入?
- java - Jhipster 注册中心尝试注册自己
- google-meet - Google Meet:获取会议的当前活跃成员
- svg - 在 SVG 中定位文本元素的字体大小和 x/y 百分比之间有什么关系?
- javascript - Firebase Realtime Database equalTo query for child in increasing keys
- haskell - 使用 IntelliJ-Haskell 插件在 IntelliJ 中创建 Haskell 项目时出错
- docker - 在 AWS Lambda 容器镜像中使用 Gradle 的 shadowJar