SuitUp 0.1.0

SuitUp 0.1.0

Dávid Széles-Szép 维护。




SuitUp 0.1.0

  • W.UP

SuitUp

swift-version license

简介

适用于使用UIKit但利用Objective-C反射功能的Swift编写的iOS应用程序的简单易用且轻量级的主题管理器。

仓库还包含一个示例应用程序,帮助您通过协议归纳的方式定义主题和样式。

example

示例

只需打开 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())