创建多主题iOS应用程序的最佳方法是什么?
我想为整个应用程序创建样式。例如,每个标签都可以有可定制的字体、大小、颜色等。
有没有可以使用的库,哪些设计模式有利于解决这个问题?
第1版-一个用例就像我们为不同的客户提供了不同的主题。我们如何从一个地方注入主题,这将反映在整个应用程序中。需要一些相同的代码示例。
根据您的需求,您希望为不同的客户端注入不同的主题。在这种情况下,可以使用依赖项注入。
要理解依赖项注入,您可以遵循-https://medium.com/@JoyceMatos/dependency-in-shift-87c748a167be
对于您的问题,您可以执行以下操作。
public protocol ThemeManagerProtocol {
var color: UIColor?{ get set }
var logoImageName: String?{ get set }
}
class ThemeManager {
static var manager: ThemeManagerProtocol? = ClientOneThemeManager() //Need to pass from app delegate
public class var color: UIColor? {
return self.manager?.color
}
public class var logoImageName: String? {
return self.manager?.logoImageName
}
}
class Appdelegate {
func applicationDidFinishLaunching(_ application: UIApplication) {
ThemeManager.manager = ClientOneThemeManager()
}
}
class ViewController: UIViewController {
override func viewDidLoad() {
print("(ThemeManager.logoImageName)")
print("(ThemeManager.color.debugDescription)")
//Above values will be picked from the respective client themes.
}
}
class ClientOneThemeManager: ThemeManagerProtocol {
var logoImageName: String? = "Image Client 1"
var color: UIColor? = .red
}
class ClientTwoThemeManager: ThemeManagerProtocol {
var logoImageName: String? = "Image Client 2"
var color: UIColor? = .white
}
有一些流行的框架,比如:
变色龙。12.3K
快捷主题。1.8K
但如果你想学习如何做到这一点,你可以研究最新的iOS功能UserInterfaceStyle
(暗模式/亮模式,语义颜色等(
此外,还有很多关于这方面的教程。其中一些使用Notification/Observer模式,而另一些则使用委派。您也可以使用Reactive
swift。