⛵️ Yalta
一个直观且强大的Auto Layout库。
整个库只包含一个文件,少于300行代码,您可以将其直接拖放到您的应用中。
Yalta遵循Swift API设计指南,力求清晰简洁。虽然大多数API都很紧凑,但使语法尽可能简洁并非目标。相反,Yalta提供了一个流畅的API,使其使用位点形成语法上的英语短语——这就是Swift代码真正出色的原因。
锚点
首先选择一个视图(或布局指南)的锚点或一组锚点。然后使用锚点的方法定义约束。
锚点表示视图的布局属性,包括边缘、尺寸、轴和基准线。
每个锚点和锚点集合都有针对该特定类型的锚点定制的方。
Constraints(for: title, subtitle) { title, subtitle in
// Align one anchor with another
subtitle.top.align(with: title.bottom + 10)
// Align center with a superview
title.centerX.alignWithSuperview()
// Manipulate dimenstions
title.width.set(100)
subtitle.width.match(title.width * 2)
// Change a priority of constraints inside a group:
subtitle.bottom.pinToSuperview().priority = UILayoutPriority(999)
}
也可以通过使用.al
代理来访问所有锚点。
title.al.top.pinToSuperview()
访问锚点的最好方法是使用特殊的addSubview(_:constraints:)
方法(支持最多4个视图)。以下是使用锚点可以做什么的一些示例
view.addSubview(subview) {
$0.edges.pinToSuperview(insets: Insets(10)) // Pin to superview edges
}
view.addSubview(subview) {
$0.edges.pinToSuperviewMargins() // Or margins
}
view.addSubview(subview) {
$0.edges(.left, .right).pinToSuperview() // Fill along horizontal axis
$0.centerY.alignWithSuperview() // Center along vertical axis
}
使用
addSubview(_:constraints:)
方法,您可以在定义视图层级的同时同时布局视图。这鼓励将布局代码拆分成逻辑块,防止一些编程错误(例如,尝试向不属于视图层级的视图添加约束)。
Yalta有完整的测试覆盖。如果您想了解每次调用其方法时Yalta创建哪些约束(
NSLayoutConstraint
),则测试用例是入门的好地方。
需求
RxNuke | Swift | Xcode | 平台 |
---|---|---|---|
Yalta 1.1 | Swift 4.2 – 5.0 | Xcode 10.1 – 10.2 | iOS 10.0 / tvOS 10.0 |
Yalta 1.0 | Swift 4.0 – 4.2 | Xcode 9.2 – 10.1 | iOS 9.0 / tvOS 9.0 |
为什么选择 Yalta
为以下用户所设计:
- 喜欢遵循 Swift API 设计指南 的流畅 API
- 不想依赖大型、复杂的库
- 不过度使用运算符重载,更偏好 快速编译时间
- 喜欢 NSLayoutAnchor,但希望它有更简单、更流畅的 API,无需手动激活约束
Yalta 是黑 Sea 上的一个美丽港口城,是一个带有 锚点 的 又一个新的布局工具 的好名字。