TinyConstraints 4.0.2

TinyConstraints 4.0.2

测试已测试
语言语言 SwiftSwift
许可证 MIT
发布最新发布2021年8月
SPM支持SPM

Robert-Hein Hooijmans维护。



TinyConstraints是使Auto Layout更适合人类使用的语法糖。

TinyConstraints

特点

  • 纯Swift 5的甜味。
  • 您可以使用Auto Layout完成的任何事情,但更短。
  • 约束默认激活。
  • 100%与其他Auto Layout代码兼容。
  • 可选存储您的约束。
  • 创建时设置约束优先级。
  • 直接约束到父视图。
  • 使用一行代码堆叠视图。
  • 无需设置translatesAutoresizingMaskIntoConstraints,因为TinyConstraints为您做这件事。

示例

边缘

使用NSLayoutConstraint将其视图附加到其父视图

NSLayoutConstraint.activate([
    view.topAnchor.constraint(equalTo: superview.topAnchor, constant: 0),
    view.leadingAnchor.constraint(equalTo: superview.leadingAnchor, constant: 0),
    view.bottomAnchor.constraint(equalTo: superview.bottomAnchor, constant: 0),
    view.trailingAnchor.constraint(equalTo: superview.trailingAnchor, constant: 0)
])

使用TinyConstraints

view.edgesToSuperview()

或者

view.edgesToSuperview(insets: .top(10) + .left(10))

中心

使用NSLayoutConstraint将视图的中心约束到父视图上

NSLayoutConstraint.activate([
    view.centerXAnchor.constraint(equalTo: superview.centerXAnchor, constant: 0)
    view.centerYAnchor.constraint(equalTo: superview.centerYAnchor, constant: 0)
])

使用TinyConstraints

view.center(in: superview)

或者

view.center(in: superview, offset: CGPoint(x: 10, y: 10))

基本用法

类型别名

TinyConstraints 为处理约束提供便捷且小巧的类型别名。

  • Constraint = NSLayoutConstraint
  • Constraints = [NSLayoutConstraint]

等价与不等价锚点

此约束将视图的 top-anchor 与其父视图的 top-anchor 锚点约束

view.top(to: superview)

firstViewtop-anchor 锚点与 secondViewbottom-anchor 锚点约束

firstView.topToBottom(of: secondView)

约束到父视图

通常需要将视图约束到它的父视图中,使用 TinyConstraints 可以轻松实现这一点

view.edgesToSuperview()

或者只约束一个边缘

view.topToSuperview()

或者,您可以只附着一个边缘,如下所示

view.edgesToSuperview(excluding: .bottom)

关系与优先级

对于几乎所有约束,您都可以设置 relation (关系)和 priority (优先级)属性。默认关系是 .equal,默认优先级是 .required

container.width(150, relation: .equalOrLess, priority: .high)

存储约束

在这里,我们创建了一组无效约束并将其存储到我们的属性中

let constraints = view.size(CGSize(width: 100, height: 100), isActive: false)

激活和去激活

除了默认的 NSLayoutConstraint 激活之外,TinyConstraints 还提供了一种激活 一组 约束的方式。

constraints.activate()

你还可以在动画中这样做。

oldConstraints.deActivate()

constraints.activate()
UIViewPropertyAnimator(duration: 1, dampingRatio: 0.4) {
    self.layoutIfNeeded()
}.startAnimation()

动画约束常数

在这里,我们为视图添加一个高度约束,将其保存并稍后进行动画处理。

let height = view.height(100)

height.constant = 200
UIViewPropertyAnimator(duration: 1, dampingRatio: 0.4) {
    self.layoutIfNeeded()
}.startAnimation()

堆叠

堆叠提供了一个将视图约束在一起在其父视图中的方法。

let views = [logo, title, description]
superview.stack(views, axis: .vertical, spacing: 10)
在示例项目中找到这些示例以及更多内容。

安装

CocoaPods

TinyConstraints 可通过 CocoaPods 获得。要安装它,只需将以下行添加到您的 Podfile:

pod "TinyConstraints"

Carthage

TinyConstraints 可以通过 Carthage 获取。安装它,只需将以下行添加到您的 Cartfile 文件中。

github "roberthein/TinyConstraints"

Swift 包管理器

TinyConstraints 可以通过 Swift Package Manager 获取。要在 Xcode 11.0 或更高版本中安装它,请选择 文件 > Swift Packages > 添加包依赖... 并添加 TinyConstraints 仓库的 URL。

https://github.com/roberthein/TinyConstraints.git

教程

以下是由 Alex Nagy 制作的一些视频教程。

建议或反馈?

请随意创建一个拉取请求,打开一个问题或在我的 Twitter 上找到我 @roberthein