Anchorman
你认为自动布局必须很难吗?
不,NSLayoutAnchor
相当不错!但它仍然是一个有点繁琐的API。试着多次写入translatesAutoresizingMaskIntoConstraints = false
和isActive = true
。但我们可以通过一个非常薄的抽象层使它变得容易一些。
让我们从词汇课开始。
UIView
和UILayoutGuide
是可锚定
的。您可以将一个锚定到另一个,只要它生成有效的NSLayoutConstraint
即可,任何您喜欢的组合。
它是怎么工作的?
我是一个酷炫的开发者,在制作一个酷炫的应用程序。它有很多视图。我想把我的视图固定到它的父视图中。
self.backgroundView.pinToSuperview()
这很简单,但我不再想固定到父视图中,我想固定到另一个视图上。
self.messageLabel.pin(to: self.backgroundView)
哦,好的。足够简单... 我的标签如何固定在父视图的左边界和右边界... 还有倍距... 并且在视图中居中。
self.titleLabel.pinToSuperview([ .leading(10.0), .trailing(10.0), .centerY ])
哇,这很酷!您可以指定您想要固定的边框组及其偏移量。Swift 枚举是最棒的!
当然,您可以将一个边框固定到另一个边框。
self.footerLabel.pin(edge: .bottom, toEdge: .bottom, of: self.view.safeAreaLayoutGuide, constant: 10.0)
最后但并非最不重要的是,为您的约束设置常量值。对于宽度,高度或两者。
self.footerLabel.set(size: .width(44.0) ])
self.titleLabel.set(size: [ .width(44.0), .height(44.0) ])
我在撒谎,还有一些其他的。Anchorman 包含了一些在 iOS 10 和 iOS 11 之间使您生活更轻松的功能。
var backwardsCompatibleSafeAreaLayoutGuide: UILayoutGuide
var backwardsCompatibleSafeAreaInsets: UIEdgeInsets
这些将在 iOS 11 中使用 safeAreaLayoutGuide
和 safeAreaInsets
,以及在 iOS 10 中使用 layoutMarginsGuide
和 layoutMargins
,因此您无需担心许多 if #available
条件。
安装
Anchorman 支持 Swift 4 的最新版本。如果您需要 Swift 3 支持,请使用 版本 2.0
您可以使用 CocoaPods 通过将 Anchorman 添加到您的 Podfile 来安装它。
platform :ios, '8.0'
use_frameworks!
pod 'Anchorman'
或者 Carthage
github "mergesort/Anchorman"
或者按照传统的老方法下载 Anchorman.swift
并将其放入您的项目中。
关于我
嗨,我是 Joe!@mergesort 在网络上的每个地方都有,尤其是在 Twitter 上。
许可证
有关如何使用 Anchorman 的更多信息,请参阅 许可证。我保证它不是 GPL,因为我不太像“那个人”。
Fin
希望 Anchorman 是你的口味,这正是我想要使用的 autolayout 库。那么,晚安,圣地亚哥。