适用于 iOS、macOS 和 tvOS 的 AutoLayout 扩展。
UIView 的 keyboardLayoutGuide,完全可动画UIView 的 keyboardSafeAreaLayoutGuide,完全可动画UIScrollView 的扩展,可根据键盘的出现情况调整 contentInset创建一个列出 framework 的 Cartfile,然后运行 carthage update。按照说明将 $(SRCROOT)/Carthage/Build/iOS/LayoutAid.framework 添加到 iOS 项目。
github "davidask/LayoutAid"
此项目支持 Swift Package Manager。
要使用此库中提供的扩展,您必须 import LayoutAid。
NSLayoutConstraint.activate {
containerView.anchor(
Edges(equalTo: view.layoutMarginsGuide)
)
iconView.anchor {
Width(equalTo: 50)
AspectRatio(equalTo: 1)
Center(equalTo: containerView)
}
label.anchor {
Top(equalToSystemSpacingBelow: iconView)
CenterX(equalTo: containerView.readableContentGuide)
Width(lessThanOrEqualTo: containerView.readableContentGuide, multiplier: 0.5)
}
}
约束最好批量激活,但是,即使使用布局锚点,创建复杂的布局也可能变得冗长。 此库在 NSLayoutConstraint 上提供了两种使用函数构建器的静态方法
build,用于使用函数构建器创建约束activate,用于使用函数构建器创建和激活约束要约束视图或布局引导,请使用 view.anchor 或 layoutGuide.anchor。 约束块可以在 NSLayoutConstraint.build 或 NSLayoutConstraint.activate 中使用。
该库使其语义与 Apple 的布局锚点 API 对齐,这意味着您会找到每个锚点类型的约束构建器,包括便捷构建器。
Leading(前导)Trailing(后缘)Left(左)Right(右)Top(上)Bottom(下)CenterX(中心 X)CenterY(中心 Y)Center(中心)Edges(边)DirectionalEdges(定向边)Size(尺寸)AspectRatio(宽高比)在 iOS 中管理键盘可能很棘手。 此库提供对 keyboardLayoutGuide 和 keyboardSafeAreaLayoutGuide 的惰性访问器。 在观察键盘状态的 Keyboard 类型的支持下,这使您可以轻松地在考虑键盘的情况下布局视图。
NSLayoutConstraint.activate {
keyboardBackgroundView.anchor(
Edges(equalTo: view.keyboardLayoutGuide)
)
keyboardAvoidingView.anchor {
Leading(equalTo: view)
Trailing(equalTo: view)
Top(equalTo: view.safeAreaLayoutGuide)
Bottom(lessThanOrEqualTo: view.keyboardSafeAreaLayoutGuide)
}
}
此库可以使用以下方法根据键盘外观自动调整 UIScrollView 的 contentInset
UIScrollView.adjustContentInsetForKeyboard(),立即将滚动视图插图调整为键盘UIScrollView.beginAdjustingContentInsetForKeyboard(),开始观察键盘自动调整滚动视图插图UIScrollView.endAdjustingContentInsetForKeyboard(),停止观察键盘自动调整滚动视图插图请随时贡献 LayoutAid,有关更多信息,请查看 LICENSE 文件。
David Ask