GTEasyLayout 1.0.1

GTEasyLayout 1.0.1

Gabriel Theodoropoulos维护。



GTEasyLayout

什么是GTEasyLayout?

GTEasyLayout是一个用Swift编写的简单的框架,它旨在最小化在iOS应用中通过代码实现UI时添加子视图并设置其约束所需的努力。当约束不太复杂时,使用GTEasyLayout是完美的工具,因为它可以使您避免重复输入大量相似的行,从而提高生产效率。

GTEasyLayout由以下部分组成

  1. 定义了自动配置约束过程的方法的GTEasyLayoutAdaptable Swift 协议。还包括一个扩展和一个默认实现,这样目标功能就可以瞬间不费吹灰之力地实现。
  2. 一个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仍在开发中,未来将会有更多功能被添加。

由以下工具创建:❤️由Gabriel Theodoropoulos创作,并提供在MIT许可证下。([email protected]