Swiftstraints 5.0.0

Swiftstraints 5.0.0

测试已测试
Lang语言 SwiftSwift
许可证 MIT
发布最新发布2019年3月
SPM支持 SPM

Brad HiltonBrad Hilton 维护。



  • 作者:
  • Brad Hilton

Swiftstraints

Swiftstraints 可以将冗长的自动布局代码

let constraint = NSLayoutConstraint(item: blueView,
                               attribute: NSLayoutAttribute.Width,
                               relatedBy: NSLayoutRelation.Equal,
                                  toItem: redView,
                               attribute: NSLayoutAttribute.Width,
                              multiplier: 1.0,
                                constant: 0.0)

转换为一行代码

let constraint = blueView.widthAnchor == redView.widthAnchor

或将不够简洁的可视格式语言代码

let constraints = NSLayoutConstraint.constraintsWithVisualFormat("H:|[leftView]-10-[rightView]|",
                               options: NSLayoutFormatOptions(0),
                               metrics: nil,
                               views: ["leftView":leftView, "rightView":rightView])

转换为以下格式

let constraints = NSLayoutConstraints("H:|[\(leftView)]-10-[\(rightView)]|")

很简单!

安装

Swiftstraints 通过 CocoaPods 提供。要安装,只需在您的 Podfile 中包含以下行:

use_frameworks!
pod 'Swiftstraints'

请确保在您的 .swift 文件顶部导入该模块

import Swiftstraints

或者,克隆此仓库或将其作为 zip 文件下载,并将类包含到您的项目中。

约束

使用 Swiftstraints,您可以创建看起来像苹果的通用约束定义的约束

item1.attribute1 = multiplier × item2.attribute2 + constant

Swifstraints 利用 iOS 9 中引入的新布局锚点

let view = UIView()
view.widthAnchor
view.heightAnchor
view.trailingAnchor
view.centerXAnchor
etc...

Swiftstraints 实现了运算符重载,您可以轻松创建自定义约束

let blueView = UIView()
let redView = UIView()
let constraint = blueView.heightAnchor == redView.heightAnchor

就像您期望的那样,您可以指定一个乘数

let constraint = blueView.heightAnchor == 2.0 * redView.heightAnchor

或添加一个常数

let constraint = blueView.heightAnchor == redView.heightAnchor + 10.0

您可以指定不等式

let constraint = blueView.heightAnchor <= redView.heightAnchor

如果您选择,可以定义常量约束

let constraint = blueView.heightAnchor == 100.0

Swiftstraints 可以轻松计算相对复杂的约束

let constraint = blueView.heightAnchor * 1.4 - 5.0 >= redView.heightAnchor / 3.0 + 400

真的很容易。

视觉格式语言

苹果公司提供了一个API,使用视觉格式语言,允许您同时创建多个约束。正如我们之前所看到的,这可能有点麻烦

let constraints = NSLayoutConstraint.constraintsWithVisualFormat("H:|[leftView]-10-[rightView]|",
                               options: NSLayoutFormatOptions(0),
                               metrics: nil,
                               views: ["leftView":leftView, "rightView":rightView])

Swiftstraints使用字符串插值,让您可以在一行代码中指定相同的约束

let constraints = NSLayoutConstraints("H:|[\(leftView)]-10-[\(rightView)]|")

Swiftstraints还扩展了UIView,这样您就可以使用插值字符串格式轻松地添加约束

superview.addConstraints("H:|[\(leftView)]-10-[\(rightView)]|")

非常容易,非常简单。

变更历史

  • 3.0.1 - 修复错误并对iOS 8提供有限支持(感谢猫家1011)
  • 3.0.0 - 更新到Swift 3
  • 2.2.0 - 添加对UILayoutPriority的支持
  • 2.1.0 - 修复了视图引用错误并添加了一个新的便捷方法来添加约束
  • 2.0.2 - 添加了对tvOS目标的支持。
  • 2.0.1 - 更新以包括对axis锚点的支持、增加测试覆盖率和更多文档。
  • 2.0.0 - 更新以兼容Swift 2.0和iOS 9。现在使用布局锚点进行简单约束,使用字符串插值进行视觉格式语言约束。
  • 1.1.0 - 小幅度API调整
  • 1.0.0 - 首次发布

作者

Brad Hilton,[email protected]

许可证

Swiftstraints可在MIT许可证下获得。有关更多信息,请参阅LICENSE文件。