Tests

LayoutAid

适用于 iOS、macOS 和 tvOS 的 AutoLayout 扩展。

特性

要求

安装

Carthage

创建一个列出 framework 的 Cartfile,然后运行 carthage update。按照说明$(SRCROOT)/Carthage/Build/iOS/LayoutAid.framework 添加到 iOS 项目。

github "davidask/LayoutAid"

Swift Package Manager

此项目支持 Swift Package Manager。

用法

要使用此库中提供的扩展,您必须 import LayoutAid

布局 DSL

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 上提供了两种使用函数构建器的静态方法

要约束视图或布局引导,请使用 view.anchorlayoutGuide.anchor。 约束块可以在 NSLayoutConstraint.buildNSLayoutConstraint.activate 中使用。

该库使其语义与 Apple 的布局锚点 API 对齐,这意味着您会找到每个锚点类型的约束构建器,包括便捷构建器。

键盘布局引导

在 iOS 中管理键盘可能很棘手。 此库提供对 keyboardLayoutGuidekeyboardSafeAreaLayoutGuide 的惰性访问器。 在观察键盘状态的 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 扩展

此库可以使用以下方法根据键盘外观自动调整 UIScrollViewcontentInset

贡献

请随时贡献 LayoutAid,有关更多信息,请查看 LICENSE 文件。

鸣谢

David Ask