SizeClasses
SizeClasses 允许你适应程序化布局的大小类别变化 - 在编写代码时使用故事板的优势!
使用
让我们从几个例子开始
// Base layout is the same in every size class
when(.any, .any, activate: [
label.centerYAnchor.constraint(equalTo: view.centerYAnchor)
])
// Use up the whole screen width in compact horizontal sizes
when(.compact, .any, activate: [
label.leadingAnchor.constraint(equalTo: view.readableContentGuide.leadingAnchor),
view.readableContentGuide.trailingAnchor.constraint(equalTo: label.trailingAnchor)
])
// Use only half of the readable content width in regular horizontal sizes
when(.regular, .any, activate: [
label.centerXAnchor.constraint(equalTo: view.readableContentGuide.centerXAnchor),
label.widthAnchor.constraint(equalTo: view.readableContentGuide.widthAnchor, multiplier: 0.5)
])
// Left align label in compact horizontal sizes
when(.compact, .any) {
label.textAlignment = .left
}
// Center align label in regular horizontal sizes
when(.regular, .any) {
label.textAlignment = .center
}
设置
仍然感兴趣?在任何 UITraitEnvironment
(UIViewController
, UIView
, 等) 中采用 SizeClasses
协议,并添加以下片段
class MyViewController: UIViewController, SizeClasses {
let sizeClassesManager = SizeClassesManager()
override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) {
super.traitCollectionDidChange(previousTraitCollection)
traitCollectionDidChange()
}
}
在布局中使用
SizeClasses 目前支持 NSLayoutConstraint
和闭包。
类似于 Xcode 的故事板,有三个大小类别选项可供选择
public enum UserInterfaceSizeClassPredicate {
case any
case compact
case regular
}
SizeClasses
协议为其实例添加了几个辅助函数
func when(_ horizontalSizeClass: UserInterfaceSizeClassPredicate, _ verticalSizeClass: UserInterfaceSizeClassPredicate, activate constraints: [NSLayoutConstraint])
func when(_ horizontalSizeClass: UserInterfaceSizeClassPredicate, _ verticalSizeClass: UserInterfaceSizeClassPredicate, do action: @escaping () -> Void) -> Any
func remove(constraint: NSLayoutConstraint)
func remove(actionWith identifier: Any)
查看代码文档以获取更多详细信息。
安装
SizeClasses 通过 Carthage 提供。要安装它,只需将以下行添加到 Cartfile 中即可。
github "Eckelf/SizeClasses"
SizeClasses 可通过 CocoaPods 使用。要安装它,只需将以下行添加到您的 Podfile 中
pod "SizeClasses"
作者
Vincent Flecke,[email protected]
许可证
SizeClasses 在 MIT 许可证下提供。更多信息请参阅 LICENSE 文件。