ClipLayout
示例
要运行示例项目,请先克隆库,然后从示例目录运行pod install
。
安装
ClipLayout可通过CocoaPods获得。要安装它,只需将以下行添加到您的Podfile中
pod 'ClipLayout'
💫 表达性
它易于阅读,并且仅用几行代码即可创建复杂布局。
🚀 性能
与其他流行库相比,它是最快的布局引擎。
📐 自动估计
您无需指定大小。ClipLayout将尝试估计视图所需的空间大小。默认情况下,将子视图放置在父视图的中心。
✂️ 裁切
如果视图无法适应屏幕,其大小将进行调整。
✨ 动画支持
要动画处理Clip Layout中的更改,只需更改布局,并在动画上下文中对父视图调用clip.invalidateLayout()
。
view.clip.withDistribution(flag ? .column : .row)
UIView.animate(withDuration: 0.8) {
self.superview.clip.invalidateLayout()
}
🙋♂️ 支持右到左语言
默认情况下,任何视图都启用了RTL支持。如果您使用distribution == .row
,则视图将在水平轴上镜像。要禁用RTL,请设置supportRightToLeft = false
。
🍻 互操作性
您可以将ClipLayout与Auto Layout或任何其他框架混合使用。您只需在父视图和后代视图上指定属性即可,将Clip Layout使用在UIView
上,设置为enable = true
。
🎛 动态集合单元格
您设置符合DataBinder的Cell,并继承ClipCell
class DynamicCell: ClipCell, DataBinder {
func set(data: SomeData) {
}
}
然后,您只需使用ClipCollectionView并将您的单元格作为泛型参数,所有内容都会自动处理。您可以可选地设置maxSize
来限制单元格大小,默认为UICollectionView的宽度和不限高度。设置数据使用data
属性。
let view = ClipCollectionView<DynamicCell>(collectionViewLayout: UICollectionViewFlowLayout())
view.data = [SomeData]()
🎏 Objc和Swift API
在Swift中您都可以使用。
objc
[view configureWithBlock:^(ClipLayout *clip) {
clip.wantsSize = CGSizeMake(100, 100);
clip.alignment.vertical = ClipAlignmentHead;
clip.distribution = ClipDistributionRow;
}];
swift
view.clip.enabled().withWidth(100).withHeight(100).verticallyAligned(.head).withDistribution(.row)
🔲 CALayer支持
作者
Denis Litvin, [email protected]
许可证
ClipLayout遵循MIT许可证。有关更多信息,请参阅LICENSE文件。