DynamicStyles 0.3.0

DynamicStyles 0.3.0

测试已测试
语言语言 SwiftSwift
许可证 MIT
发布最新发布2017年1月
SwiftSwift 版本3.0
SPM支持 SPM

Sam Easterby-Smith 维护。



概览

DynamicStyles,iOS 应用缺失的样式管理器。

  • 编写单个样式表来管理您 iOS 应用中所有的排版
  • 在 InterfaceBuilder 中实现所见即所得的样式...
  • ... 或者通过代码应用样式
  • 目前覆盖:字体、粗细、大小、行和段落间距
  • 与:UILabel 和 UIButton(更多内容即将推出)协同工作
  • 可选使用 Apple 的 DynamicType 字体缩放以实现全面的可访问性乐趣
  • 使用 Swift 编写
  • 兼容 iOS > 8.0
  • 欢迎投稿

安装

需求

  • Xcode 8
  • Swift 3.0
  • iOS 8

或者

如果您想手动集成框架或尝试示例项目,请克隆仓库。

… 然后执行以下操作

在一个名为 Stylesheet.plist 的属性列表中创建一个,位于您的项目中的某个位置。您可以查看仓库中的示例项目以获取起点。有关详细信息,请参阅下面的语法部分。

从理论上讲,您可以告诉它使用从代码中定制的命名 plist,但是如果您这样做,将无法在 IB 中实现渲染。

使用方法

Interface Builder

  • 选择 nib/storyboard 中的 UILabel
  • 身份检查器 中,将自定义类设置为 DynamicStyleLabel。模块应该会自动更新(如果不会,请确保它说的是 DynamicStyles
  • 属性检查器 中,有一个名为 Style Name 的框 - 在其中输入您已定义的样式之一,并查看标签更新!

与按钮一样。它们的自定义类是 DynamicStyleButton。计划在将来将其扩展到其他 UIView 变体。

代码

label.styleName="heading"

或者用更详细的方式...

let stylesheet = Stylesheet.defaultStylesheet
let headingStyle = stylesheet.style("heading")
label.style=headingStyle

样式表语法

Stylesheet.plist 应包含一系列样式定义的字典。每个定义都是一个字典,其中样式的名称作为键。

定义可以采用以下键

类型 默认值 说明
family 字符串 Helvetica Neue
face 字符串 Regular
size 数值 17
shouldScale 布尔型 NO 启用动态类型缩放(包括更大的无障碍性大小)
parent 字符串 对父样式名称的引用 - 不能形成循环
paragraphSpacing 数值 0 段之间的间距(以点为单位)
lineSpacing 数值 0 连续行之间的间距(以点为单位)
alignment 字符串 left 可以是左对齐、居中、右对齐、两边对齐或自然对齐
minimumLineHeight 数值 空值
maximumLineHeight 数值 空值

…例如,可能看起来像这样

* root
    * baseStyle
        * family : Courier
    * headlineStyle
        * face : Bold
        * size : 24
        * parent : baseStyle
    * bigHeadlineStyle
        * size : 48
        * parent : headlineStyle
    * bodyStyle
        * shouldScale : true
        * parent : baseStyle
        * paragraphSpacing : 5