EasySwiftLayout 1.6.3

EasySwiftLayout 1.6.3

Den AndreychukDen Andreychuk 维护。



EasySwiftLayout

Platform Cocoapods Compatible Carthage compatible

我很高兴与您分享一个轻量级的 Swift 框架,用于 Apple 的 Auto-Layout。它可以帮助您使用简单的 API 编写可读性和紧凑的 UI 代码。

最初,它只是为我的几个商业项目设计的 UIView 的几个扩展,但最终代码继续增长,所以我决定将其移到一个单独的框架中。我希望有些人会发现它有帮助,所以请自由分享您的反馈,并为 EasySwiftLayout 点几个赞!

如果您想报告错误或请求新功能,请创建工单。我将尽力尽快解决这些问题。

内容

要求

  • iOS 9.0+
  • Xcode 9.0+
  • Swift 4+

文档

EasySwiftLayout 中所有方法都设计得易于理解,但同时也包含了详细的用法描述。您可以在代码中按 键并在方法上单击,或在下面的 API 操练指南 部分查看。

安装

CocoaPods

CocoaPods 是 Cocoa 项目的依赖管理器。有关使用和安装说明,请访问他们的网站。要使用 CocoaPods 将 EasySwiftLayout 集成到您的 Xcode 项目中,请在您的 Podfile 中指定它。

pod 'EasySwiftLayout'

Carthage

Carthage 是一个去中心化的依赖管理器,它构建您的依赖并提供您二进制框架。要使用 Carthage 将 EasySwiftLayout 集成到您的 Xcode 项目中,请在您的 Cartfile 中指定它。

github "denandreychuk/EasySwiftLayout"

Swift Package Manager

Swift Package Manager 是一个用于自动化 Swift 代码分配的工具,它是集成到 swift 编译器的。它处于早期开发阶段,但 EasySwiftLayout 支持在支持的平台使用它。

一旦您设置了 Swift 包,将 EasySwiftLayout 作为依赖项添加就像将它添加到您的 Package.swift 中的 dependencies 值一样简单。

dependencies: [
    .package(url: "https://github.com/Pimine/EasySwiftLayout.git", .upToNextMajor(from: "1.6.0"))
]

手动

如果您不想使用上述任何依赖管理器,您可以手动将 EasySwiftLayout 集成到您的项目中。

嵌入式框架

  • 通过运行以下命令克隆此仓库:

    $ git clone https://github.com/denandreychuk/EasySwiftLayout.git
  • 导航到项目文件夹并打开 EasySwiftLayout.xcodeproj

  • ^ + 0 选择方案 Build Framework 并在任何设备上运行它。它将为您自动生成 EasySwiftLayout.framework 文件,并在 Finder 中打开。

  • 将此文件移动到您的项目文件夹。

  • 在“项目导航器”(蓝色图标)中选择您的应用程序,以便导航到目标配置窗口。

  • 在侧边栏的“目标”标题下选择所需的目标。

  • 在“通用”选项卡中,点击“嵌入式二进制文件”部分下的“+”按钮(在Xcode 11中称为“框架、库和嵌入式内容”),然后选择移动的“EasySwiftLayout.framework”文件。

  • 完成。

    将“EasySwiftLayout.framework”自动添加为目标依赖项、链接框架和嵌入式框架,在复制文件构建阶段,这就是您在模拟器和设备上所需的所有内容。

使用方法

快速入门

import EasySwiftLayout

class ViewController: UIViewController {
    private let boxView = UIView()
    
    override func viewDidLoad() {
        super.viewDidLoad()
        addAndLayoutSubviews()
    }
    
    private func addAndLayoutSubviews() {        
        boxView
            .add(toSuperview: view)
            .centerInSuperview()
            .size(toSquareWithSide: 50)
    }
}

示例

EasySwiftLayout附带项目示例。您可以查看如何使用ESL轻松创建这样的屏幕。

  • 导航到项目文件夹并打开 EasySwiftLayout.xcodeproj
  • 通过按^ + 0选择方案Example-IOS,然后在任何设备上运行它。

API 快速参考

UIView 扩展

辅助工具

add(toSuperview:)
总结

将视图添加到指定的父视图作为子视图。

声明
func add(toSuperview superview: UIView) -> Self
参数
参数 类型 描述
superview UIView 要添加子视图的父视图。
返回

self with attribute @discardableResult.

声明在

UIView + Helpers.swift

大小方法(常量)

width(_:usingRelation:priority:)
摘要

使用指定的关系类型和给定大小的优先级,设置视图的宽度。

声明
func width(_ width: CGFloat, usingRelation relation: NSLayoutConstraint.Relation = .equal, priority: UILayoutPriority = .required) -> Self
讨论
  • 使用 NSLayoutConstraint 限制了视图宽度的锚点。

  • 为了使自动布局正常工作,它自动将视图属性 translatesAutoresizingMaskIntoConstraints 设置为 false

先决条件

传入大于 zero 的大小,否则此方法将没有效果。

参数
参数 类型 描述
width CGFloat 要将此视图宽度设置为的值。
relation NSLayoutConstraint.Relation 约束的关系类型。
priority UILayoutPriority 约束的优先级。
返回值

self with attribute @discardableResult.

声明在

UIView + Size.swift

height(_:usingRelation:priority:)
摘要

通过指定的类型的关系和约束的优先级设置视图的宽高。

声明
func height(_ height: CGFloat, usingRelation relation: NSLayoutConstraint.Relation = .equal, priority: UILayoutPriority = .required) -> Self
讨论
  • 使用NSLayoutConstraint约束视图的宽高锚点。

  • 为了使自动布局正常工作,它自动将视图属性 translatesAutoresizingMaskIntoConstraints 设置为 false

前置条件

传入大于 zero 的大小,否则此方法将没有效果。

参数
参数 类型 描述
height CGFloat 将此视图高度设置为此值。
relation NSLayoutConstraint.Relation 约束的关系类型。
priority UILayoutPriority 约束的优先级。
返回值

self with attribute @discardableResult.

声明于

UIView + Size.swift

size(_:usingRelation:priority:)
概述

使用指定的关系类型,以约束的优先级设置给定大小的视图的尺寸。

声明
func size(_ size: CGSize, usingRelation relation: NSLayoutConstraint.Relation = .equal, priority: UILayoutPriority = .required) -> Self
讨论
  • 使用NSLayoutConstraint约束高度和宽度的锚点。

  • 为了使自动布局正常工作,它自动将视图属性 translatesAutoresizingMaskIntoConstraints 设置为 false

先决条件

传入大于 zero 的大小,否则此方法将没有效果。

参数
参数 类型 描述
size CGSize 设置此视图尺寸的大小。
relation NSLayoutConstraint.Relation 约束的关系类型。
priority UILayoutPriority 约束的优先级。
返回

self with attribute @discardableResult.

声明于

UIView + Size.swift

size(toSquareWithSide:usingRelation:priority:)
摘要

将视图的大小设置为一个边使用指定的相对类型的约束优先级给定尺寸的平方。

声明
func size(toSquareWithSide side: CGFloat, usingRelation relation: NSLayoutConstraint.Relation = .equal, priority: UILayoutPriority = .required) -> Self
讨论
  • 使用 NSLayoutConstraint 约束来匹配平方大小设置宽度和高度锚点。

  • 为了使自动布局正常工作,它自动将视图属性 translatesAutoresizingMaskIntoConstraints 设置为 false

前置条件

传递大于零的边长,否则此方法将不会有任何效果。

参数
参数 类型 描述
side CGFloat 设置视图尺寸的平方边。
relation NSLayoutConstraint.Relation 约束的关系类型。
priority UILayoutPriority 约束的优先级。
返回值

self with attribute @discardableResult.

声明于

UIView + Size.swift

尺寸方法(另一种视图)

width(match:withInset:usingRelation:priority:)
摘要

使用指定的关系类型来设置视图的宽度,包括约束的内边距和优先级。

声明
func width(match anotherView: UIView, withInset inset: CGFloat = .zero, usingRelation relation: NSLayoutConstraint.Relation = .equal, priority: UILayoutPriority = .required) -> Self
讨论
  • 使用 NSLayoutConstraint 约束来匹配平方大小设置宽度和高度锚点。

  • 为了使自动布局正常工作,它自动将视图属性 translatesAutoresizingMaskIntoConstraints 设置为 false

参数
参数 类型 描述
另一个视图 UIView 设置此视图宽度的另一个视图。
内边距 CGFloat 内边距的值。负值将宽度扩展。
relation NSLayoutConstraint.Relation 约束的关系类型。
priority UILayoutPriority 约束的优先级。
返回值

self with attribute @discardableResult.

声明位置

UIView + Size.swift

高度(匹配:与内边距:使用关系:优先级:)
概述

使用指定的关系设置视图的高度,并具有内边距和约束的优先级。

声明
func height(match anotherView: UIView, withInset inset: CGFloat = .zero, usingRelation relation: NSLayoutConstraint.Relation = .equal, priority: UILayoutPriority = .required) -> Self
讨论
  • 使用 NSLayoutConstraint 约束来匹配平方大小设置宽度和高度锚点。

  • 为了使自动布局正常工作,它自动将视图属性 translatesAutoresizingMaskIntoConstraints 设置为 false

参数
参数 类型 描述
另一个视图 UIView 设置视图高度的另一种视图。
内边距 CGFloat 向内缩进(或缩放)高度的值。负值使高度外扩(或扩展)。
relation NSLayoutConstraint.Relation 约束的关系类型。
priority UILayoutPriority 约束的优先级。
返回值

self with attribute @discardableResult.

声明于

UIView + Size.swift

大小(match:与边距:使用关系:优先级:)
摘要

使用指定的关系类型,以及约束的边距和优先级设置视图的大小。

声明
func size(match anotherView: UIView, withInsets insets: ESLSizeInsets = .zero, usingRelation relation: NSLayoutConstraint.Relation = .equal, priority: UILayoutPriority = .required) -> Self
讨论
  • 使用 NSLayoutConstraint 约束来匹配平方大小设置宽度和高度锚点。

  • 为了使自动布局正常工作,它自动将视图属性 translatesAutoresizingMaskIntoConstraints 设置为 false

参数
参数 类型 描述
另一个视图 UIView 设置视图高度的另一种视图。
边距 ESLSizeInsets 设置(或减小)尺寸的值。负值会导致尺寸外扩(或扩展)。
relation NSLayoutConstraint.Relation 约束的关系类型。
priority UILayoutPriority 约束的优先级。
返回值

self with attribute @discardableResult.

声明位置

UIView + Size.swift

size(match:匹配, withInset:内外缩放, usingRelation:使用关系, priority:优先级:
概要

使用指定的关系类型,以及约束的边距和优先级设置视图的大小。

声明
func size(match anotherView: UIView, withInset inset: CGFloat = .zero, usingRelation relation: NSLayoutConstraint.Relation = .equal, priority: UILayoutPriority = .required) -> Self
讨论
  • 使用 NSLayoutConstraint 约束来匹配平方大小设置宽度和高度锚点。

  • 为了使自动布局正常工作,它自动将视图属性 translatesAutoresizingMaskIntoConstraints 设置为 false

参数
参数 类型 描述
另一个视图 UIView 设置视图高度的另一种视图。
内边距 CGFloat 用于设置(或缩小)尺寸的值。负值会导致尺寸外扩(或扩展)。
relation NSLayoutConstraint.Relation 约束的关系类型。
priority UILayoutPriority 约束的优先级。
返回值

self with attribute @discardableResult.

声明位置

UIView + Size.swift

固定方法

pin(topTo:leftTo:bottomTo:rightTo:withInsets:priority:)
概述

将边缘固定到给定的NSLayoutAxisAnchors,并带有约束的填充和优先级。

声明
func pin(topTo top: NSLayoutYAxisAnchor? = nil, leftTo left: NSLayoutXAxisAnchor? = nil, bottomTo bottom: NSLayoutYAxisAnchor? = nil, rightTo right: NSLayoutXAxisAnchor? = nil, withInsets insets: UIEdgeInsets = .zero, priority: UILayoutPriority = .required) -> Self
讨论
  • 默认Swift布局的紧凑版本。允许您将边缘固定到特定的NSLayoutAxisAnchor

  • 为了使自动布局正常工作,它会自动将视图的属性translatesAutoresizingMaskIntoConstraints设置为false

前置条件

您至少应传递一个锚点,否则此方法将没有任何效果。

参数
参数 类型 描述
top NSLayoutYAxisAnchor 将该视图顶部与该锚点相连。
left NSLayoutXAxisAnchor 将该视图左侧与该锚点相连。
bottom NSLayoutYAxisAnchor 将该视图底部与该锚点相连。
right NSLayoutXAxisAnchor 将该视图右侧与该锚点相连。
边距 UIEdgeInsets 边缘之间的内边距。
priority UILayoutPriority 约束的优先级。
返回

self with attribute @discardableResult.

声明

UIView + Pin.swift

pinEdge(_:toEdge:ofView:withInset:usingRelation:priority:)
摘要

使用指定的关系类型和约束的缩进和优先级,将视图的边缘固定到另一个视图的特定边缘。

声明
func pinEdge(_ edge: ESLEdge, toEdge pinningEdge: ESLEdge, ofView anotherView: UIView, withInset inset: CGFloat = .zero, usingRelation relation: NSLayoutConstraint.Relation = .equal, priority: UILayoutPriority = .required) -> Self
讨论
  • 根据Apple文档,请注意,您不能使用不同轴的边缘进行固定,否则将抛出致命错误。

  • 为了使自动布局正常工作,它会自动将视图属性 translatesAutoresizingMaskIntoConstraints 设置为 false

先决条件
  • 另一个视图必须与此视图位于同一个视图层次结构中。

  • 使用相同轴或方法固定边的操作将抛出致命错误。

参数
参数 类型 描述
ESLEdge 此视图要固定的边。
pinningEdge ESLEdge 要固定到另一个视图的边。
另一个视图 NSLayoutYAxisAnchor 要固定的另一个视图。
内边距 CGFloat 此视图边缘与另一个视图边缘之间的内边距。
relation NSLayoutConstraint.Relation 约束关系的类型。
priority UILayoutPriority 约束的优先级。
返回值

self with attribute @discardableResult.

声明于

UIView + Pin.swift

pinEdge(_:toSameEdgeOfView:withInset:usingRelation:priority:)
概要

使用指定的关系类型和边界内边距以及优先级,将给定视图的边固定到另一个视图的对应边框。

声明
func pinEdge(_ edge: ESLEdge, toSameEdgeOfView anotherView: UIView, withInset inset: CGFloat = .zero, usingRelation relation: NSLayoutConstraint.Relation = .equal, priority: UILayoutPriority = .required) -> Self
讨论

为了使自动布局正常工作,它会自动将视图属性 translatesAutoresizingMaskIntoConstraints 设置为 false

先决条件

另一个视图必须与此视图位于同一个视图层次结构中。

参数
参数 类型 描述
ESLEdge 此视图要固定的边。
另一个视图 NSLayoutYAxisAnchor 要固定的另一个视图。
内边距 CGFloat 此视图边缘与另一个视图对应边缘之间的空隙。
relation NSLayoutConstraint.Relation 约束关系的类型。
priority UILayoutPriority 约束的优先级。
返回值

self with attribute @discardableResult.

声明于

UIView + Pin.swift

pinEdges(_:toSameEdgesOfView:withInsets:usingRelation:priority:)
概要

使用指定的关系类型,将视图的给定边与另一视图的相应边框对齐,并具有约束的内边距和优先级。

声明
func pinEdges(_ edges: [ESLEdge] = ESLEdge.all, toSameEdgesOfView anotherView: UIView, withInsets insets: UIEdgeInsets = .zero, usingRelation relation: NSLayoutConstraint.Relation = .equal, priority: UILayoutPriority = .required) -> Self
讨论
  • 如果你需要根据边来自定义内边距,请使用pinEdges(_:toSameEdgesOfView:withInset:usingRelation:priority:)

  • 为了使自动布局正常工作,它会自动设置视图属性translatesAutoresizingMaskIntoConstraintsfalse

先决条件

另一个视图必须与此视图位于同一个视图层次结构中。

参数
参数 类型 描述
edges [ESLEdge] 需要固定此视图的边。
另一个视图 NSLayoutYAxisAnchor 要固定的另一个视图。
边距 UIEdgeInsets 此视图的边与另一个视图的对应边的内边距。
relation NSLayoutConstraint.Relation 约束的关系类型。
priority UILayoutPriority 约束的优先级。
返回值

self with attribute @discardableResult.

在...

UIView + Pin.swift

pinEdges(_:toSameEdgesOfView:withInset:usingRelation:priority:)
摘要

使用指定的关系,将视图的给定边缘与另一个视图的相应边框对齐,确保具有相同的内边距和约束优先级。

声明
func pinEdges(_ edges: [ESLEdge] = ESLEdge.all, toSameEdgesOfView anotherView: UIView, withInset inset: CGFloat, usingRelation relation: NSLayoutConstraint.Relation = .equal, priority: UILayoutPriority = .required) -> Self
讨论
  • 如果不需要根据边缘自定义内边距,请使用 pinEdges(_:toSameEdgesOfView:withInsets:usingRelation:priority:)

  • 为了使自动布局正常工作,它会自动设置视图属性translatesAutoresizingMaskIntoConstraintsfalse

前提

另一个视图必须与此视图位于同一个视图层次结构中。

参数
参数 类型 描述
edges [ESLEdge] 需要固定此视图的边。
另一个视图 NSLayoutYAxisAnchor 要固定的另一个视图。
边距 CGFloat 本视图边缘与另一个视图对应边缘之间的内边距。
relation NSLayoutConstraint.Relation 约束的关系类型。
priority UILayoutPriority 约束的优先级。
返回值

self with attribute @discardableResult.

声明位置

UIView + Pin.swift

pinEdges(ofGroup:toSameEdgesOfView:withInset:usingRelation:priority:)
概要

使用指定的关系类型,将指定群组的视图边缘固定到另一个具有相同边距和约束优先级的视图的相应边缘.]

声明
func pinEdges(ofGroup edgeGroup: ESLEdgeGroup, toSameEdgesOfView anotherView: UIView, withInset inset: CGFloat, usingRelation relation: NSLayoutConstraint.Relation = .equal, priority: UILayoutPriority = .required) -> Self
讨论

为了使自动布局正常工作,它会自动设置视图属性translatesAutoresizingMaskIntoConstraintsfalse

先决条件

另一个视图必须与此视图位于同一个视图层次结构中。

参数
参数 类型 描述
edgeGroup 边缘群组 要固定到这个视图上的边缘群组。
另一个视图 NSLayoutYAxisAnchor 要固定的另一个视图。
边距 CGFloat 本视图边缘与另一个视图对应边缘之间的内边距。
relation NSLayoutConstraint.Relation 约束的关系类型。
priority UILayoutPriority 约束的优先级。
返回值

self with attribute @discardableResult.

在何处声明

UIView + Pin.swift

pinEdges(toSameEdgesOfView:excludingEdge:withInsets:usingRelation:priority:)
摘要

使用指定的关系类型将视图的边固定到另一个视图的对应边框和内边距的边界上,使用内边距和约束的优先级,排除一个边缘

声明
func pinEdges(toSameEdgesOfView anotherView: UIView, excludingEdge excludedEdge: ESLEdge, withInsets insets: UIEdgeInsets = .zero, usingRelation relation: NSLayoutConstraint.Relation = .equal, priority: UILayoutPriority = .required) -> Self
讨论
  • 如果你的需求不需要根据边缘自定义内边距,则使用pinEdges(toSameEdgesOfView:excludingEdge:withInset:usingRelation:priority:)
  • 为了使自动布局正常工作,它会自动设置视图属性translatesAutoresizingMaskIntoConstraintsfalse
前提条件

另一个视图必须与此视图位于同一个视图层次结构中。

参数
参数 类型 描述
另一个视图 NSLayoutYAxisAnchor 要固定的另一个视图。
excludedEdge ESLEdge 将被忽略并固定边缘。
边距 UIEdgeInsets 此视图的边与另一个视图的对应边的内边距。
relation NSLayoutConstraint.Relation 约束的关系类型。
priority UILayoutPriority 约束的优先级。
返回值

self with attribute @discardableResult.

定义于

UIView + Pin.swift

pinEdges(toSameEdgesOfView:excludingEdge:withInset:usingRelation:priority:)
概要

使用指定的关系将视图的边固定到另一个视图的对应边和内缩,同时具有相同约束的内缩和优先级,但不包括一个边。

声明
func pinEdges(toSameEdgesOfView anotherView: UIView, excludingEdge excludedEdge: ESLEdge, withInset inset: CGFloat, usingRelation relation: NSLayoutConstraint.Relation = .equal, priority: UILayoutPriority = .required) -> Self
讨论
  • 如果需要根据边自定义内缩,请使用pinEdges(toSameEdgesOfView:excludingEdge:withInsets:usingRelation:priority:)
  • 为了使自动布局正常工作,它会自动设置视图属性translatesAutoresizingMaskIntoConstraintsfalse
先决条件

另一个视图必须与此视图位于同一个视图层次结构中。

参数
参数 类型 描述
另一个视图 NSLayoutYAxisAnchor 要固定的另一个视图。
excludedEdge ESLEdge 将被忽略并固定边缘。
内边距 CGFloat 本视图边缘与另一个视图对应边缘之间的内边距。
relation NSLayoutConstraint.Relation 约束的关系类型。
priority UILayoutPriority 约束的优先级。
返回

self with attribute @discardableResult.

声明于

UIView + Pin.swift

pinEdge(_:toEdge:ofGuide:withInset:usingRelation:priority:)
总结

使用指定的关系将视图的边缘与指南的给定边缘固定,并使用约束的插入和优先级。

声明
func pinEdge(_ edge: ESLEdge, toEdge pinningEdge: ESLEdge, ofGuide guide: ESLGuide, withInset inset: CGFloat = .zero, usingRelation relation: NSLayoutConstraint.Relation = .equal, priority: UILayoutPriority = .required) -> Self
讨论
  • 根据Apple文档,请注意,您不能使用不同轴的边缘进行固定,否则将抛出致命错误。

  • 为了使自动布局正常工作,它会自动将视图属性 translatesAutoresizingMaskIntoConstraints 设置为 false

前提条件

使用相同轴或方法固定边的操作将抛出致命错误。

参数
参数 类型 描述
ESLEdge 此视图要固定的边。
pinningEdge ESLEdge 要固定到另一个视图的边。
guide ESLGuide 要固定到的引导...
内边距 CGFloat 此视图边缘与另一个视图边缘之间的内边距。
relation NSLayoutConstraint.Relation 约束关系的类型。
priority UILayoutPriority 约束的优先级。
返回值

self with attribute @discardableResult.

声明位置

UIView + Pin.swift

pinEdge(_:toSameEdgeOfGuide:withInset:usingRelation:priority:)
摘要

使用指定的关系将视图的给定边与相应的边距引导相连接,使用约束的内置和优先级。

声明
func pinEdge(_ edge: ESLEdge, toSameEdgeOfGuide guide: ESLGuide, withInset inset: CGFloat = .zero, usingRelation relation: NSLayoutConstraint.Relation = .equal, priority: UILayoutPriority = .required) -> Self
讨论

为了使自动布局正常工作,它会自动将视图属性 translatesAutoresizingMaskIntoConstraints 设置为 false

参数
参数 类型 描述
ESLEdge 此视图要固定的边。
guide ESLGuide 要连接的引导。
内边距 CGFloat 此视图边缘与另一个视图对应边缘之间的空隙。
relation NSLayoutConstraint.Relation 约束关系的类型。
priority UILayoutPriority 约束的优先级。
返回值

self with attribute @discardableResult.

声明位置

UIView + Pin.swift

pinEdges(_:toSameEdgesOfGuide:withInsets:usingRelation:priority:)
摘要

使用指定的约束关系和优先级,将视图的给定边缘与引导的相应边距及其内边距进行锚定。

声明
func pinEdges(_ edges: [ESLEdge] = ESLEdge.all, toSameEdgesOfGuide guide: ESLGuide, withInsets insets: UIEdgeInsets = .zero, usingRelation relation: NSLayoutConstraint.Relation = .equal, priority: UILayoutPriority = .required) -> Self
讨论
  • 如果您需要根据边缘定制内边距,请使用pinEdges(_:toSameEdgesOfGuide:withInset:usingRelation:priority:)

  • 为了使自动布局正常工作,它会自动设置视图属性translatesAutoresizingMaskIntoConstraintsfalse

参数
参数 类型 描述
edges [ESLEdge] 需要固定此视图的边。
guide ESLGuide 要固定到的引导...
边距 UIEdgeInsets 此视图的边与另一个视图的对应边的内边距。
relation NSLayoutConstraint.Relation 约束的关系类型。
priority UILayoutPriority 约束的优先级。
返回值

self with attribute @discardableResult.

声明位置

UIView + Pin.swift

pinEdges(_:toSameEdgesOfGuide:withInset:usingRelation:priority:)
摘要

使用指定的关系类型,将视图的给定边缘与指南的相应边框以相同的嵌入和约束优先级固定。

声明
func pinEdges(_ edges: [ESLEdge] = ESLEdge.all, toSameEdgesOfGuide guide: ESLGuide, withInset inset: CGFloat, usingRelation relation: NSLayoutConstraint.Relation = .equal, priority: UILayoutPriority = .required) -> Self
讨论
  • 如果你不需要根据边缘自定义嵌入,请使用 pinEdges(_:toSameEdgesOfGuide:withInsets:usingRelation:priority:)

  • 为了使自动布局正常工作,它会自动设置视图属性translatesAutoresizingMaskIntoConstraintsfalse

参数
参数 类型 描述
edges [ESLEdge] 需要固定此视图的边。
guide ESLGuide 要连接的引导。
边距 CGFloat 本视图边缘与另一个视图对应边缘之间的内边距。
relation NSLayoutConstraint.Relation 约束的关系类型。
priority UILayoutPriority 约束的优先级。
返回值

self with attribute @discardableResult.

声明于

UIView + Pin.swift

pinEdges(ofGroup:toSameEdgesOfGuide:withInset:usingRelation:priority:)
摘要

使用指定的关系类型,将给定组的视图边与指南对应边的外边距进行固定,具有相等的内边距和约束优先级。

声明
func pinEdges(ofGroup edgeGroup: ESLEdgeGroup, toSameEdgesOfGuide guide: ESLGuide, withInset inset: CGFloat, usingRelation relation: NSLayoutConstraint.Relation = .equal, priority: UILayoutPriority = .required) -> Self
讨论

为了使自动布局正常工作,它会自动设置视图属性translatesAutoresizingMaskIntoConstraintsfalse

参数
参数 类型 描述
edgeGroup 边缘群组 要固定到这个视图上的边缘群组。
guide ESLGuide 要连接的引导。
边距 CGFloat 本视图边缘与另一个视图对应边缘之间的内边距。
relation NSLayoutConstraint.Relation 约束的关系类型。
priority UILayoutPriority 约束的优先级。
返回值

self with attribute @discardableResult.

声明位置

UIView + Pin.swift

pinEdges(toSameEdgesOfGuide:excludingEdge:withInsets:usingRelation:priority:)
摘要

使用指定的关系类型,固定视图的边,使用内边距和约束优先级,排除一个边。

声明
func pinEdges(toSameEdgesOfGuide guide: ESLGuide, excludingEdge excludedEdge: ESLEdge, withInsets insets: UIEdgeInsets = .zero, usingRelation relation: NSLayoutConstraint.Relation = .equal, priority: UILayoutPriority = .required) -> Self
讨论
  • 如果不根据边缘自定义内边距,则使用pinEdges(toSameEdgesOfGuide:excludingEdge:withInset:usingRelation:priority:)
  • 为了使自动布局正常工作,它会自动设置视图属性translatesAutoresizingMaskIntoConstraintsfalse
参数
参数 类型 描述
guide ESLGuide 要连接的引导。
excludedEdge ESLEdge 将被忽略并固定边缘。
边距 UIEdgeInsets 此视图的边与另一个视图的对应边的内边距。
relation NSLayoutConstraint.Relation 约束的关系类型。
priority UILayoutPriority 约束的优先级。
返回值

self with attribute @discardableResult.

声明位置

UIView + Pin.swift

pinEdges(toSameEdgesOfGuide:excludingEdge:withInset:usingRelation:priority:)
摘要

使用指定的关系类型,用相同内边距和约束的优先级将视图的边缘固定到对应指南的相应边框上,排除一个边缘。

声明
func pinEdges(toSameEdgesOfGuide guide: ESLGuide, excludingEdge excludedEdge: ESLEdge, withInset inset: CGFloat, usingRelation relation: NSLayoutConstraint.Relation = .equal, priority: UILayoutPriority = .required) -> Self
讨论
  • 如果您需要根据边缘自定义内缩边距,请使用pinEdges(toSameEdgesOfGuide:excludingEdge:withInsets:usingRelation:priority:)
  • 为了使自动布局正常工作,它会自动设置视图属性translatesAutoresizingMaskIntoConstraintsfalse
参数
参数 类型 描述
guide ESLGuide 要连接的引导。
excludedEdge ESLEdge 将被忽略并固定边缘。
内边距 CGFloat 此视图边缘与相应指南边缘之间的内缩边距。
relation NSLayoutConstraint.Relation 约束的关系类型。
priority UILayoutPriority 约束的优先级。
返回值

self with attribute @discardableResult.

声明在

UIView + Pin.swift

链接到父视图方法

只是为了提醒,假设您有一个名为 MyView 的视图,该视图在其上方有一个 UIButton(loginButton)。在这种情况下,MyViewloginButton 的父视图,而 loginButtonMyView 的子视图。

pinEdge(_:toSuperviewEdge:withInset:respectingGuide:usingRelation:priority:)
概述

使用指定的关系类型将视图的边缘固定到其父视图的给定边缘,并使用约束的内缩边距和优先级。可选地尊重Apple预定义的布局指南之一。

声明
func pinEdge(_ edge: ESLEdge, toSuperviewEdge superviewEdge: ESLEdge, withInset inset: CGFloat = .zero, respectingGuide guide: ESLSuperviewGuide = .none, usingRelation relation: NSLayoutConstraint.Relation = .equal, priority: UILayoutPriority = .required) -> Self
讨论
  • 根据Apple文档,请注意,您不能使用不同轴的边缘进行固定,否则将抛出致命错误。

  • 只有当你希望将视图边缘与其父视图的对边固定时,才应使用此方法,在其他情况下,使用 pinEdgeToSuperview(_:withInset:usingRelation:priority:) 将更合适。

  • 为了使自动布局正常工作,它会自动设置视图属性translatesAutoresizingMaskIntoConstraintsfalse

前提条件
  • 视图应该有父视图,否则该方法将没有效果。

  • 使用相同轴或方法固定边的操作将抛出致命错误。

参数
参数 类型 描述
ESLEdge 此视图要固定的边。
superviewEdge ESLEdge 要将边缘固定的父视图的边缘。
内边距 CGFloat 此视图边缘与父视图边缘之间的内偏移。
guide ESLSuperviewGuide 布局中要尊重的指南。
relation NSLayoutConstraint.Relation 约束的关系类型。
priority UILayoutPriority 约束的优先级。
返回值

self with attribute @discardableResult.

声明于

UIView + Pin(Superview).swift

pinEdgeToSuperview(_:withInset:respectingGuide:usingRelation:priority:)
摘要

使用指定的关系类型以及约束的内边距和优先级,将视图的给定边与其父视图对应边框进行定位。可选地,可以尊重Apple预定义的布局指南之一。

声明
func pinEdgeToSuperview(_ edge: ESLEdge, withInset inset: CGFloat = .zero, respectingGuide guide: ESLSuperviewGuide = .none, usingRelation relation: NSLayoutConstraint.Relation = .equal, priority: UILayoutPriority = .required) -> Self
讨论

为了使自动布局正常工作,它会自动设置视图属性translatesAutoresizingMaskIntoConstraintsfalse

前提条件

视图应该有父视图,否则此方法将不会有任何效果。

参数
参数 类型 描述
ESLEdge 此视图要固定的边。
内边距 CGFloat 从视图的边与父视图相应边之间的大小。
guide ESLSuperviewGuide 布局中要尊重的指南。
relation NSLayoutConstraint.Relation 约束的关系类型。
priority UILayoutPriority 约束的优先级。
返回值

self with attribute @discardableResult.

声明在

UIView + Pin(Superview).swift

pinEdgesToSuperview(_:withInsets:respectingGuide:usingRelation:priority:)
摘要

使用指定的关系类型,将视图给定的边缘与父视图相应的边缘进行对齐,包括约束的内边距和优先级。可选地尊重预定义的Apple布局指南。

声明
func pinEdgesToSuperview(_ edges: [ESLEdge] = ESLEdge.all, withInsets insets: UIEdgeInsets = .zero, respectingGuide guide: ESLSuperviewGuide = .none, usingRelation relation: NSLayoutConstraint.Relation = .equal, priority: UILayoutPriority = .required) -> Self
讨论
  1. 如果您不需要根据边缘自定义内边距,请使用pinEdgesToSuperview(_:withInset:usingRelation:priority:)

  2. 为了使自动布局正常工作,它会自动设置视图属性translatesAutoresizingMaskIntoConstraintsfalse

先决条件

视图应该有父视图,否则此方法将不会有任何效果。

参数
参数 类型 描述
edges [ESLEdge] 需要固定此视图的边。
边距 UIEdgeInsets 此视图边缘和其父视图相应边缘之间的内边距。
guide ESLSuperviewGuide 布局中要尊重的指南。
relation NSLayoutConstraint.Relation 约束的关系类型。
priority UILayoutPriority 约束的优先级。
返回值

self with attribute @discardableResult.

声明在

UIView + Pin(Superview).swift

pinEdgesToSuperview(_:withInset:respectingGuide:usingRelation:priority:)
摘要

使用指定的关系将视图的给定边缘与其父视图对应边界的内边距平齐,并使用约束的相等内边距和优先级。可选地尊重Apple预定义的布局向导之一。

声明
func pinEdgesToSuperview(_ edges: [ESLEdge] = ESLEdge.all, withInset inset: CGFloat, respectingGuide guide: ESLSuperviewGuide = .none, usingRelation relation: NSLayoutConstraint.Relation = .equal, priority: UILayoutPriority = .required) -> Self
讨论
  1. 如果需要根据边自定义内边距,则使用pinEdgesToSuperview(_:withInsets:usingRelation:priority:)

  2. 为了使自动布局正常工作,它自动将视图属性 translatesAutoresizingMaskIntoConstraints 设置为 false

先决条件

视图应该有父视图,否则此方法将不会有任何效果。

参数
参数 类型 描述
edges [ESLEdge] 需要固定此视图的边。
内边距 CGFloat 此视图的边缘与其父视图对应边缘之间的内边距。
guide ESLSuperviewGuide 布局中要尊重的指南。
relation NSLayoutConstraint.Relation 约束的关系类型。
priority UILayoutPriority 约束的优先级。
返回

self with attribute @discardableResult.

声明于

UIView + Pin(Superview).swift

pinEdgesToSuperview(ofGroup:withInset:respectingGuide:usingRelation:priority:)
概要

使用指定的关系将给定组的视图的边缘与父视图中相应的边缘相连接,具有相等的内边距和约束优先级。可选地遵守Apple预定义的布局指南之一。

声明
func pinEdgesToSuperview(ofGroup group: ESLEdgeGroup, withInset inset: CGFloat = .zero, respectingGuide guide: ESLSuperviewGuide = .none, usingRelation relation: NSLayoutConstraint.Relation = .equal, priority: UILayoutPriority = .required) -> Self
讨论

为了使自动布局正常工作,它自动将视图属性 translatesAutoresizingMaskIntoConstraints 设置为 false

先决条件

视图应该有父视图,否则此方法将不会有任何效果。

参数
参数 类型 描述
group 边缘群组 要固定到这个视图上的边缘群组。
内边距 CGFloat 此视图的边缘与其父视图对应边缘之间的内边距。
guide ESLSuperviewGuide 布局中要尊重的指南。
relation NSLayoutConstraint.Relation 约束的关系类型。
priority UILayoutPriority 约束的优先级。
返回值

self with attribute @discardableResult.

声明于

UIView + Pin(Superview).swift

pinEdgesToSuperview(excludingEdge:withInsets:respectingGuide:usingRelation:priority:)
摘要

使用指定的关系类型将视图的边缘与其父视图相应的边缘以指定的内边距和约束优先级相连接,并排除一个边缘。可选地尊重 Apple 预定义的布局指南之一。

声明
func pinEdgesToSuperview(excludingEdge excludedEdge: ESLEdge, withInsets insets: UIEdgeInsets = .zero, respectingGuide guide: ESLSuperviewGuide = .none, usingRelation relation: NSLayoutConstraint.Relation = .equal, priority: UILayoutPriority = .required) -> Self
讨论
  1. 如果您不需要根据边缘自定义内边距,请使用pinEdgesToSuperview(excludingEdge:withInset:usingRelation:priority:)

  2. 为了使自动布局正常工作,它会自动设置视图属性translatesAutoresizingMaskIntoConstraintsfalse

先决条件

视图应该有父视图,否则此方法将不会有任何效果。

参数
参数 类型 描述
excludedEdge ESLEdge 将被忽略并固定边缘。
边距 UIEdgeInsets 本视图的边缘与其父视图相应边缘之间的内边距。
guide ESLSuperviewGuide 布局中要尊重的指南。
relation NSLayoutConstraint.Relation 约束的关系类型。
priority UILayoutPriority 约束的优先级。
返回值

self with attribute @discardableResult.

声明位置

UIView + Pin(Superview).swift

pinEdgesToSuperview(excludingEdge:withInset:respectingGuide:usingRelation:priority:)
摘要

使用特定类型的关联,以等距和约束优先级将与视图对应父视图的边界的约束边缘固定,排除一个边界。可选地遵循预定义的Apple布局指南之一。

声明
func pinEdgesToSuperview(excludingEdge excludedEdge: ESLEdge, withInset inset: CGFloat, respectingGuide guide: ESLSuperviewGuide = .none, usingRelation relation: NSLayoutConstraint.Relation = .equal, priority: UILayoutPriority = .required) -> Self
讨论
  1. 如需根据边界自定义内边距,请使用 pinEdgesToSuperview(excludingEdge:withInset:usingRelation:priority:)

  2. 为了使自动布局正常工作,它会自动设置视图属性translatesAutoresizingMaskIntoConstraintsfalse

前提条件

视图应该有父视图,否则此方法将不会有任何效果。

参数
参数 类型 描述
excludedEdge ESLEdge 将被忽略并固定边缘。
内边距 CGFloat 此视图的边缘与其父视图对应边缘之间的内边距。
guide ESLSuperviewGuide 布局中要尊重的指南。
relation NSLayoutConstraint.Relation 约束的关系类型。
priority UILayoutPriority 约束的优先级。
返回

self with attribute @discardableResult.

声明在

UIView + Pin(Superview).swift

居中方法

centerInView(_:withOffset:priority:)
概述

使用约束的偏移量和优先级,将视图在另一个视图中居中。

声明
func centerInView(_ anotherView: UIView, withOffset offset: UIOffset = .zero, priority: UILayoutPriority = .required) -> Self
讨论

为了使自动布局正常工作,它自动将视图属性 translatesAutoresizingMaskIntoConstraints 设置为 false

前置条件

另一个视图必须与此视图位于同一个视图层次结构中。

参数
参数 类型 描述
另一个视图 UIView 另一种居中的视图。
偏移量 UI偏移量 轴偏移。
priority UILayoutPriority 约束的优先级。
返回值

self with attribute @discardableResult.

声明位置

UIView + Center.swift

centerInView(_:axis:withOffset:priority:)
概要

使用约束的偏移量和优先级在另一个视图中居中此视图的轴。

声明
func centerInView(_ anotherView: UIView, axis: ESLAxis, withOffset offset: CGFloat = .zero, priority: UILayoutPriority = .required) -> Self
讨论

为了使自动布局正常工作,它自动将视图属性 translatesAutoresizingMaskIntoConstraints 设置为 false

先决条件

另一个视图必须与此视图位于同一个视图层次结构中。

参数
参数 类型 描述
另一个视图 UIView 在视图中居中。
ESLAxis 居中的轴
偏移量 UI偏移量 轴偏移。
priority UILayoutPriority 约束的优先级。
返回值

self with attribute @discardableResult.

定义在

UIView + Center.swift

centerInSuperview(withOffset:priority:)
概述

使用偏移量和约束优先级将视图居中于其父视图的视图之间。

声明
func centerInSuperview(withOffset offset: UIOffset = .zero, priority: UILayoutPriority = .required) -> Self
讨论

为了使自动布局正常工作,它自动将视图属性 translatesAutoresizingMaskIntoConstraints 设置为 false

先决条件

视图应该有父视图,否则此方法将不会有任何效果。

参数
参数 类型 描述
偏移量 UI偏移量 轴偏移。
priority UILayoutPriority 约束的优先级。
返回值

self with attribute @discardableResult.

声明位置

UIView + Center.swift

centerInSuperview(axis:withOffset:priority:)
摘要

使用偏移和约束优先级将此视图的轴居中在其父视图内。

声明位置
func centerInSuperview(axis: ESLAxis, withOffset offset: CGFloat = .zero, priority: UILayoutPriority = .required) -> Self
讨论

为了使自动布局正常工作,它自动将视图属性 translatesAutoresizingMaskIntoConstraints 设置为 false

前提条件

视图应该有父视图,否则此方法将不会有任何效果。

参数
参数 类型 描述
ESLAxis 轴线居中。
偏移量 CGFloat 轴偏移。
priority UILayoutPriority 约束的优先级。
返回值

self with attribute @discardableResult.

声明位置

UIView + Center.swift

许可协议

EasySwiftLayout 采用 MIT 许可协议发布。有关详细信息,请参阅 LICENSE 文件。查看 LICENSE