SBAutoLayout
SBAutoLayout 是 UIView 的一个扩展,使得在 Swift 中无需编写冗长的自动布局语法即可轻松执行常见的自动布局操作。
一些示例
使用高度和宽度固定到父视图中心
view.pinWidth(100)
view.pinHeight(100)
view.pinToSuperviewCenter()
某些视图可以使用一行代码进行定位
view.pinToSuperviewAsTopStrip(height: 50)
所有方法都返回生成的约束。如果您以后需要删除或更改它们,这将非常方便。
let topConstraint = view.pinToSuperviewTop(margin: 60)
view.pinToSuperviewBottom(margin: 40)
view.pinToSuperviewLeading(margin: 15)
view.pinToSuperviewTrailing(margin: 15)
// ...Later
topConstraint.constant = 30
如果有多个视图呢?当然。
blueView.pinToSuperviewCenter()
blueView.pinHeight(100)
blueView.pinAspectRatio(width: 1, height: 1)
orangeView.pinToSuperviewCenterX()
orangeView.pinHeight(80)
orangeView.pinAspectRatio(width: 1, height: 1)
orangeView.pinAboveView(blueView, separation: 10)
完整方法列表
固定宽度和高度
func pinWidth(_ width: CGFloat, priority: UILayoutPriority? = nil) -> NSLayoutConstraint
func pinHeight(_ height: CGFloat, priority: UILayoutPriority? = nil) -> NSLayoutConstraint
func pinAspectRatio(width: CGFloat, height: CGFloat, priority: UILayoutPriority? = nil) -> NSLayoutConstraint
固定到父视图的边缘
func pinToSuperviewEdges(priority: UILayoutPriority? = nil) -> [NSLayoutConstraint]
func pinToSuperviewEdges(top: CGFloat, bottom: CGFloat, leading: CGFloat, trailing: CGFloat, priority: UILayoutPriority? = nil) -> [NSLayoutConstraint]
func pinToSuperviewEdges(insets: UIEdgeInsets, priority: UILayoutPriority? = nil) -> [NSLayoutConstraint]
func pinToSuperviewTop(margin: CGFloat, priority: UILayoutPriority? = nil) -> NSLayoutConstraint
func pinToSuperviewBottom(margin: CGFloat, priority: UILayoutPriority? = nil) -> NSLayoutConstraint
func pinToSuperviewLeft(margin: CGFloat, priority: UILayoutPriority? = nil) -> NSLayoutConstraint
func pinToSuperviewRight(margin: CGFloat, priority: UILayoutPriority? = nil) -> NSLayoutConstraint
func pinToSuperviewLeading(margin: CGFloat, priority: UILayoutPriority? = nil) -> NSLayoutConstraint
func pinToSuperviewTrailing(margin: CGFloat, priority: UILayoutPriority? = nil) -> NSLayoutConstraint
固定到父视图作为条带
func pinToSuperviewAsTopStrip(height: CGFloat, priority: UILayoutPriority? = nil) -> [NSLayoutConstraint]
func pinToSuperviewAsBottomStrip(height: CGFloat, priority: UILayoutPriority? = nil) -> [NSLayoutConstraint]
func pinToSuperviewAsLeftStrip(width: CGFloat, priority: UILayoutPriority? = nil) -> [NSLayoutConstraint]
func pinToSuperviewAsRightStrip(width: CGFloat, priority: UILayoutPriority? = nil) -> [NSLayoutConstraint]
func pinToSuperviewAsLeadingStrip(width: CGFloat, priority: UILayoutPriority? = nil) -> [NSLayoutConstraint]
func pinToSuperviewAsTrailingStrip(width: CGFloat, priority: UILayoutPriority? = nil) -> [NSLayoutConstraint]
固定到父视图中心
func pinToSuperviewCenterX(offset: CGFloat = 0, priority: UILayoutPriority? = nil) -> NSLayoutConstraint
func pinToSuperviewCenterY(offset: CGFloat = 0, priority: UILayoutPriority? = nil) -> NSLayoutConstraint
func pinToSuperviewCenter(priority: UILayoutPriority? = nil) -> [NSLayoutConstraint] // MARK:- Pin to other views
固定在其他视图上方或下方
func pinAboveView(_ otherView: UIView, separation: CGFloat = 0, priority: UILayoutPriority? = nil) -> NSLayoutConstraint
func pinBelowView(_ otherView: UIView, separation: CGFloat = 0, priority: UILayoutPriority? = nil) -> NSLayoutConstraint
固定到其他视图的左侧、右侧、 Leading 或 Trailing
func pinToLeftOfView(_ otherView: UIView, separation: CGFloat = 0, priority: UILayoutPriority? = nil) -> NSLayoutConstraint
func pinToRightOfView(_ otherView: UIView, separation: CGFloat = 0, priority: UILayoutPriority? = nil) -> NSLayoutConstraint
func pinTrailingFromView(_ otherView: UIView, separation: CGFloat = 0, priority: UILayoutPriority? = nil) -> NSLayoutConstraint
func pinLeadingToView(_ otherView: UIView, separation: CGFloat = 0, priority: UILayoutPriority? = nil) -> NSLayoutConstraint
匹配其他视图的宽度和高度
func pinWidthToSameAsView(_ otherView: UIView, priority: UILayoutPriority? = nil) -> NSLayoutConstraint
func pinHeightToSameAsView(_ otherView: UIView, priority: UILayoutPriority? = nil) -> NSLayoutConstraint
安装
CocoaPods
将以下行添加到您的Podfile
:
pod "SBAutoLayout"
Carthage
将以下行添加到您的Cartfile
:
github "SteveBarnegren/SBAutolayout"
手动
将SBAutoLayout.swift
复制到您的项目中
Carthage
将以下内容添加到您的Cartfile
中:github "SteveBarnegren/SBAutoLayout"
谁?
授权
SBAutoLayout采用MIT授权。有关更多信息,请查阅LICENSE文件。