GTEasyLayout
什么是GTEasyLayout?
GTEasyLayout是一个用Swift编写的简单的框架,它旨在最小化在iOS应用中通过代码实现UI时添加子视图并设置其约束所需的努力。当约束不太复杂时,使用GTEasyLayout是完美的工具,因为它可以使您避免重复输入大量相似的行,从而提高生产效率。
GTEasyLayout由以下部分组成
- 定义了自动配置约束过程的方法的
GTEasyLayoutAdaptable
Swift 协议。还包括一个扩展和一个默认实现,这样目标功能就可以瞬间不费吹灰之力地实现。 - 一个
GTEasyLayout
类,它只是一个命名空间,用于自定义类型。不应创建此类实例,因为没有可用的属性或方法可以访问。
当前实现的核心理念是,子视图可以与容器视图的所有或某些边缘相连接。可以在任意侧面指定子视图和容器视图之间的间隔(填充),提供视图大小,以及动画更改填充和尺寸(即更改控制子视图位置和大小的约束的动画)。
以下是协议定义
public protocol GTEasyLayoutAdaptable {
func add(view: UIView, to targetView: UIView, snapTo edges: GTEasyLayout.SnapEdges, padding: UIEdgeInsets, size: CGSize)
func updatePadding(at side: GTEasyLayout.Side, ofView view: UIView, newValue: CGFloat, animationSettings: GTEasyLayout.AnimationSettings?, completion: (()-> Void)?)
func updateDimension(_ dimension: GTEasyLayout.Dimension, ofView view: UIView, newValue: CGFloat, animationSettings: GTEasyLayout.AnimationSettings?, completion: (() -> Void)?)
}
在由jazzy生成的文档中查看关于上述自定义类型的文档,在GTEasyLayoutAdaptable.swift中查看有关每个方法的文档。所有这些都可以在这个页面找到。
集成
GTEasyLayout 可以以两种不同方式集成到项目中
使用 CocoaPods
在你的 Podfile 中添加
pod 'GTEasyLayout'
记得在将要使用框架的任何地方 导入
import GTEasyLayout
手动
下载或克隆此存储库,然后将 源 目录以及其中包含的文件添加到你的项目中。
使用示例
注意: 请查看 Wiki 以获取详细的示例以及结果的视觉表示,或者打开 Xcode 中的示例项目以查看整个效果。
首先,让您的类遵循 GTEasyLayoutAdaptable
协议
class ViewController: UIViewController, GTEasyLayoutAdaptable {
...
}
接下来现在
将子视图与视图控制器根视图的所有边缘对齐,并在所有边缘留下 50 像素填充
add(view: someView,
to: self.view,
snapTo: .all,
padding: UIEdgeInsets(all: 50.0),
size: .zero)
与顶部、左侧对齐,并设置宽度为 250 像素。高度将为 0.0,因为它会自动计算
add(view: myView,
to: self.view,
snapTo: .topLeftBottom,
padding: UIEdgeInsets(top: 20.0, left: 0.0, bottom: 0.0, right: 0.0),
size: CGSize(width: 250.0, height: 0.0))
水平垂直居中大小为 200x150 像素的视图
add(view: someView,
to: self.view,
snapTo: .centerX_Y,
padding: .zero,
size: CGSize(width: 200.0, height: 150.0))
在左侧填充更新时进行动画处理:
let animSettings = GTEasyLayout.AnimationSettings(withDuration: 0.5, delay: 0.0, damping: 0.7, velocity: 1.0, options: .curveLinear)
updatePadding(at: .left,
ofView: someView,
newValue: 150.0,
animationSettings: animSettings,
completion: nil)
动画高度维度变化(向 animationSettings
传递 nil
将使以下方法使用默认动画设置)
updateDimension(.height,
ofView: someView,
newValue: 400.0,
animationSettings: nil,
completion: nil)
如果您不希望对约束更改进行动画处理,则初始化 GTEasyLayout.AnimationSettings
对象并将 duration
设置为零。
其他说明
GTEasyLayout仍在开发中,未来将会有更多功能被添加。
由以下工具创建: