ClipLayout 1.3.2

ClipLayout 1.3.2

DenisLitvin 维护。



  • Denis Litvin

ClipLayout

Version License Platform

示例

要运行示例项目,请先克隆库,然后从示例目录运行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文件。