我很高兴与您分享一个轻量级的 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
.
声明在
大小方法(常量)
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
.
声明在
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
.
声明于
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
.
声明于
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
.
声明于
尺寸方法(另一种视图)
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
.
声明位置
高度(匹配:与内边距:使用关系:优先级:)
概述
使用指定的关系设置视图的高度,并具有内边距和约束的优先级。
声明
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
.
声明于
大小(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
.
声明位置
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
.
声明位置
固定方法
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
.
声明
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
.
声明于
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
.
声明于
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:)
。 -
为了使自动布局正常工作,它会自动设置视图属性
translatesAutoresizingMaskIntoConstraints
为false
。
先决条件
另一个视图必须与此视图位于同一个视图层次结构中。
参数
参数 | 类型 | 描述 |
---|---|---|
edges | [ESLEdge] |
需要固定此视图的边。 |
另一个视图 | NSLayoutYAxisAnchor |
要固定的另一个视图。 |
边距 | UIEdgeInsets |
此视图的边与另一个视图的对应边的内边距。 |
relation | NSLayoutConstraint.Relation |
约束的关系类型。 |
priority | UILayoutPriority |
约束的优先级。 |
返回值
self
with attribute @discardableResult
.
在...
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:)
。 -
为了使自动布局正常工作,它会自动设置视图属性
translatesAutoresizingMaskIntoConstraints
为false
。
前提
另一个视图必须与此视图位于同一个视图层次结构中。
参数
参数 | 类型 | 描述 |
---|---|---|
edges | [ESLEdge] |
需要固定此视图的边。 |
另一个视图 | NSLayoutYAxisAnchor |
要固定的另一个视图。 |
边距 | CGFloat |
本视图边缘与另一个视图对应边缘之间的内边距。 |
relation | NSLayoutConstraint.Relation |
约束的关系类型。 |
priority | UILayoutPriority |
约束的优先级。 |
返回值
self
with attribute @discardableResult
.
声明位置
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
讨论
为了使自动布局正常工作,它会自动设置视图属性translatesAutoresizingMaskIntoConstraints
为false
。
先决条件
另一个视图必须与此视图位于同一个视图层次结构中。
参数
参数 | 类型 | 描述 |
---|---|---|
edgeGroup | 边缘群组 |
要固定到这个视图上的边缘群组。 |
另一个视图 | NSLayoutYAxisAnchor |
要固定的另一个视图。 |
边距 | CGFloat |
本视图边缘与另一个视图对应边缘之间的内边距。 |
relation | NSLayoutConstraint.Relation |
约束的关系类型。 |
priority | UILayoutPriority |
约束的优先级。 |
返回值
self
with attribute @discardableResult
.
在何处声明
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:)
。 - 为了使自动布局正常工作,它会自动设置视图属性
translatesAutoresizingMaskIntoConstraints
为false
。
前提条件
另一个视图必须与此视图位于同一个视图层次结构中。
参数
参数 | 类型 | 描述 |
---|---|---|
另一个视图 | NSLayoutYAxisAnchor |
要固定的另一个视图。 |
excludedEdge | ESLEdge |
将被忽略并固定边缘。 |
边距 | UIEdgeInsets |
此视图的边与另一个视图的对应边的内边距。 |
relation | NSLayoutConstraint.Relation |
约束的关系类型。 |
priority | UILayoutPriority |
约束的优先级。 |
返回值
self
with attribute @discardableResult
.
定义于
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:)
。 - 为了使自动布局正常工作,它会自动设置视图属性
translatesAutoresizingMaskIntoConstraints
为false
。
先决条件
另一个视图必须与此视图位于同一个视图层次结构中。
参数
参数 | 类型 | 描述 |
---|---|---|
另一个视图 | NSLayoutYAxisAnchor |
要固定的另一个视图。 |
excludedEdge | ESLEdge |
将被忽略并固定边缘。 |
内边距 | CGFloat |
本视图边缘与另一个视图对应边缘之间的内边距。 |
relation | NSLayoutConstraint.Relation |
约束的关系类型。 |
priority | UILayoutPriority |
约束的优先级。 |
返回
self
with attribute @discardableResult
.
声明于
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
.
声明位置
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
.
声明位置
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:)
。 -
为了使自动布局正常工作,它会自动设置视图属性
translatesAutoresizingMaskIntoConstraints
为false
。
参数
参数 | 类型 | 描述 |
---|---|---|
edges | [ESLEdge] |
需要固定此视图的边。 |
guide | ESLGuide |
要固定到的引导... |
边距 | UIEdgeInsets |
此视图的边与另一个视图的对应边的内边距。 |
relation | NSLayoutConstraint.Relation |
约束的关系类型。 |
priority | UILayoutPriority |
约束的优先级。 |
返回值
self
with attribute @discardableResult
.
声明位置
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:)
。 -
为了使自动布局正常工作,它会自动设置视图属性
translatesAutoresizingMaskIntoConstraints
为false
。
参数
参数 | 类型 | 描述 |
---|---|---|
edges | [ESLEdge] |
需要固定此视图的边。 |
guide | ESLGuide |
要连接的引导。 |
边距 | CGFloat |
本视图边缘与另一个视图对应边缘之间的内边距。 |
relation | NSLayoutConstraint.Relation |
约束的关系类型。 |
priority | UILayoutPriority |
约束的优先级。 |
返回值
self
with attribute @discardableResult
.
声明于
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
讨论
为了使自动布局正常工作,它会自动设置视图属性translatesAutoresizingMaskIntoConstraints
为false
。
参数
参数 | 类型 | 描述 |
---|---|---|
edgeGroup | 边缘群组 |
要固定到这个视图上的边缘群组。 |
guide | ESLGuide |
要连接的引导。 |
边距 | CGFloat |
本视图边缘与另一个视图对应边缘之间的内边距。 |
relation | NSLayoutConstraint.Relation |
约束的关系类型。 |
priority | UILayoutPriority |
约束的优先级。 |
返回值
self
with attribute @discardableResult
.
声明位置
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:)
。 - 为了使自动布局正常工作,它会自动设置视图属性
translatesAutoresizingMaskIntoConstraints
为false
。
参数
参数 | 类型 | 描述 |
---|---|---|
guide | ESLGuide |
要连接的引导。 |
excludedEdge | ESLEdge |
将被忽略并固定边缘。 |
边距 | UIEdgeInsets |
此视图的边与另一个视图的对应边的内边距。 |
relation | NSLayoutConstraint.Relation |
约束的关系类型。 |
priority | UILayoutPriority |
约束的优先级。 |
返回值
self
with attribute @discardableResult
.
声明位置
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:)
。 - 为了使自动布局正常工作,它会自动设置视图属性
translatesAutoresizingMaskIntoConstraints
为false
。
参数
参数 | 类型 | 描述 |
---|---|---|
guide | ESLGuide |
要连接的引导。 |
excludedEdge | ESLEdge |
将被忽略并固定边缘。 |
内边距 | CGFloat |
此视图边缘与相应指南边缘之间的内缩边距。 |
relation | NSLayoutConstraint.Relation |
约束的关系类型。 |
priority | UILayoutPriority |
约束的优先级。 |
返回值
self
with attribute @discardableResult
.
声明在
链接到父视图方法
只是为了提醒,假设您有一个名为 MyView
的视图,该视图在其上方有一个 UIButton
(loginButton)。在这种情况下,MyView
是 loginButton
的父视图,而 loginButton
是 MyView
的子视图。
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:)
将更合适。 -
为了使自动布局正常工作,它会自动设置视图属性
translatesAutoresizingMaskIntoConstraints
为false
。
前提条件
-
视图应该有父视图,否则该方法将没有效果。
-
使用相同轴或方法固定边的操作将抛出致命错误。
参数
参数 | 类型 | 描述 |
---|---|---|
边 | ESLEdge |
此视图要固定的边。 |
superviewEdge | ESLEdge |
要将边缘固定的父视图的边缘。 |
内边距 | CGFloat |
此视图边缘与父视图边缘之间的内偏移。 |
guide | ESLSuperviewGuide |
布局中要尊重的指南。 |
relation | NSLayoutConstraint.Relation |
约束的关系类型。 |
priority | UILayoutPriority |
约束的优先级。 |
返回值
self
with attribute @discardableResult
.
声明于
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
讨论
为了使自动布局正常工作,它会自动设置视图属性translatesAutoresizingMaskIntoConstraints
为false
。
前提条件
视图应该有父视图,否则此方法将不会有任何效果。
参数
参数 | 类型 | 描述 |
---|---|---|
边 | ESLEdge |
此视图要固定的边。 |
内边距 | CGFloat |
从视图的边与父视图相应边之间的大小。 |
guide | ESLSuperviewGuide |
布局中要尊重的指南。 |
relation | NSLayoutConstraint.Relation |
约束的关系类型。 |
priority | UILayoutPriority |
约束的优先级。 |
返回值
self
with attribute @discardableResult
.
声明在
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
讨论
-
如果您不需要根据边缘自定义内边距,请使用
pinEdgesToSuperview(_:withInset:usingRelation:priority:)
。 -
为了使自动布局正常工作,它会自动设置视图属性
translatesAutoresizingMaskIntoConstraints
为false
。
先决条件
视图应该有父视图,否则此方法将不会有任何效果。
参数
参数 | 类型 | 描述 |
---|---|---|
edges | [ESLEdge] |
需要固定此视图的边。 |
边距 | UIEdgeInsets |
此视图边缘和其父视图相应边缘之间的内边距。 |
guide | ESLSuperviewGuide |
布局中要尊重的指南。 |
relation | NSLayoutConstraint.Relation |
约束的关系类型。 |
priority | UILayoutPriority |
约束的优先级。 |
返回值
self
with attribute @discardableResult
.
声明在
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
讨论
-
如果需要根据边自定义内边距,则使用
pinEdgesToSuperview(_:withInsets:usingRelation:priority:)
。 -
为了使自动布局正常工作,它自动将视图属性
translatesAutoresizingMaskIntoConstraints
设置为false
先决条件
视图应该有父视图,否则此方法将不会有任何效果。
参数
参数 | 类型 | 描述 |
---|---|---|
edges | [ESLEdge] |
需要固定此视图的边。 |
内边距 | CGFloat |
此视图的边缘与其父视图对应边缘之间的内边距。 |
guide | ESLSuperviewGuide |
布局中要尊重的指南。 |
relation | NSLayoutConstraint.Relation |
约束的关系类型。 |
priority | UILayoutPriority |
约束的优先级。 |
返回
self
with attribute @discardableResult
.
声明于
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
.
声明于
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
讨论
-
如果您不需要根据边缘自定义内边距,请使用
pinEdgesToSuperview(excludingEdge:withInset:usingRelation:priority:)
。 -
为了使自动布局正常工作,它会自动设置视图属性
translatesAutoresizingMaskIntoConstraints
为false
。
先决条件
视图应该有父视图,否则此方法将不会有任何效果。
参数
参数 | 类型 | 描述 |
---|---|---|
excludedEdge | ESLEdge |
将被忽略并固定边缘。 |
边距 | UIEdgeInsets |
本视图的边缘与其父视图相应边缘之间的内边距。 |
guide | ESLSuperviewGuide |
布局中要尊重的指南。 |
relation | NSLayoutConstraint.Relation |
约束的关系类型。 |
priority | UILayoutPriority |
约束的优先级。 |
返回值
self
with attribute @discardableResult
.
声明位置
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
讨论
-
如需根据边界自定义内边距,请使用
pinEdgesToSuperview(excludingEdge:withInset:usingRelation:priority:)
。 -
为了使自动布局正常工作,它会自动设置视图属性
translatesAutoresizingMaskIntoConstraints
为false
。
前提条件
视图应该有父视图,否则此方法将不会有任何效果。
参数
参数 | 类型 | 描述 |
---|---|---|
excludedEdge | ESLEdge |
将被忽略并固定边缘。 |
内边距 | CGFloat |
此视图的边缘与其父视图对应边缘之间的内边距。 |
guide | ESLSuperviewGuide |
布局中要尊重的指南。 |
relation | NSLayoutConstraint.Relation |
约束的关系类型。 |
priority | UILayoutPriority |
约束的优先级。 |
返回
self
with attribute @discardableResult
.
声明在
居中方法
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
.
声明位置
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
.
定义在
centerInSuperview(withOffset:priority:)
概述
使用偏移量和约束优先级将视图居中于其父视图的视图之间。
声明
func centerInSuperview(withOffset offset: UIOffset = .zero, priority: UILayoutPriority = .required) -> Self
讨论
为了使自动布局正常工作,它自动将视图属性 translatesAutoresizingMaskIntoConstraints
设置为 false
先决条件
视图应该有父视图,否则此方法将不会有任何效果。
参数
参数 | 类型 | 描述 |
---|---|---|
偏移量 | UI偏移量 |
轴偏移。 |
priority | UILayoutPriority |
约束的优先级。 |
返回值
self
with attribute @discardableResult
.
声明位置
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
.
声明位置
许可协议
EasySwiftLayout 采用 MIT 许可协议发布。有关详细信息,请参阅 LICENSE 文件。查看 LICENSE