SuitUp
简介
适用于使用UIKit但利用Objective-C反射功能的Swift编写的iOS应用程序的简单易用且轻量级的主题管理器。
仓库还包含一个示例应用程序,帮助您通过协议归纳的方式定义主题和样式。
示例
只需打开 SuitUp工作空间
并尽情享受吧!
安装
使用 CocoaPods
pod 'SuitUp'
或者您可以手动安装
下载它,然后将SuitUp/SuitUp
文件夹的内容拖放到您的项目中。
导入
当然,不要忘记在您想使用的地方导入 SuitUp。
import SuitUp
主题
主题包含基于设计的颜色、字体和图像定义,但您可以扩展它以包含所需的内容。在 SuitUp 中,您可以像通常的浅色和深色模式一样在这些主题之间切换。
颜色、字体和图像
基本主题包含这些类型的属性,但如果您衍生出一个协议并在此项目中使用扩展版本,您也可以扩展它。在示例项目中,您可以查看以下类似的调色板:
protocol ColorPalette: Colors {
var primary: UIColor { get }
var secondary: UIColor { get }
var tertiary: UIColor { get }
var primaryText: UIColor { get }
var secondaryText: UIColor { get }
}
注册
创建主题后,您需要在应用程序启动时在 AppDelegate
中的 didFinishLaunchingWithOptions:
调用期间进行注册。
SuitUp.shared.registerThemes(SunriseTheme(), SunsetTheme())
SuitUp.shared.logLevel = .warning
您可以将日志级别设置为根据您偏好的警告或信息。我的建议是开始时设置为信息级别,因为如果您选择此级别,您将看到更多关于样式设置的内部信息。
主题更改
您可以使用 SuitUp 中的 changeTheme(to:)
函数在运行时更改当前使用的主题。
样式
每个样式都包含从UI组件中镜像的样式属性,您希望对其样式的属性。然而,样式完全独立于UI组件,因此您不必用任何与StrongSuitUp相关的代码片段扩展您的UI组件。您可以在描述符中定义这些属性,您可以在下一节中了解更多关于它的信息。因此,如果UIView有一个backgroundColor属性,您想要通过StrongSuitUp对其进行样式化,您必须将此属性添加到样式。它与任何属性都兼容,但只有在属性可以从Objective-C代码中访问的情况下才适用。您可以通过在属性前使用Strong@objc标注来实现这一点。或者(在类上使用Strong@objcMembers)每个样式都必须是NSObject的子类。
样式描述符
它包含样式属性的描述。重要的是要注意,您必须在描述符中使用与在UI组件中使用的完全相同的名称。所以如果你在UIView中有backgroundColor属性,你必须在描述符中以同样的名称定义它,你必须在协议前使用 Strong@objc 标注,如下所示
@objc
protocol ViewStyleDescriptor: StyleDescriptor {
var backgroundColor: UIColor { get }
}
如何使用主题中的项
在示例项目中有一个StrongStyleDescriptor协议的扩展,因此您可以遵循此模式
extension StyleDescriptor {
var colors: ColorPalette { SuitUp.shared.currentTheme?.colors as! ColorPalette }
var fonts: FontPalette { SuitUp.shared.currentTheme?.fonts as! FontPalette }
var images: ImagePalette { SuitUp.shared.currentTheme?.images as! ImagePalette }
}
或者只要有需要就可以使用这种非常长的形式
(SuitUp.shared.currentTheme?.colors as? ColorPalette).primary
用法
您可以通过给Strongapply(style:)函数提供的样式实例设置样式。这是通过UIView扩展提供的。
primaryView.apply(style: PrimaryViewStyle())