方圆 0.1.8

方圆 0.1.8

测试已测试
Lang语言 SwiftSwift
许可证 MIT
Released最后发布2018年4月
SPM支持SPM

HaloWang 维护。



方圆 0.1.8

  • 作者
  • 王策

FangYuan 方圆

“方圆”是一个易于使用、轻量级、高性能、纯代码的布局库。

“方圆”基于 UIView.frame 属性进行布局,有 Swift 和 Objective-C 两种实现。

“方圆”提供了一种简洁美观的方式来操作 UIView.frame 属性。

“方圆”提供了一个比 Masonry/SnapKit 更易于使用和调试的布局方案。

你是否愿意使用方圆

  • 如果你经常使用 Masonry/SnapKit 和基于 frame 的布局进行布局,我非常推荐你了解一下“方圆”。
  • 如果你有一套自己的布局库,那我将非常乐意和你交流。😁
  • 如果你热衷于使用 xib/storyboard,那么“方圆”可能并不适合你。

使用 CocoaPods 将方圆集成到你的项目中

在你的 Podfile 中输入以下命令

Swift

platform :ios, '8.0'
use_frameworks!
target '<Your Target Name>' do
    pod 'FangYuan'
end

Objective-C

如果你想在ObjC环境中使用方圆,你需要使用方圆的ObjC实现

target '<Your Target Name>' do
    pod 'FangYuanObjC'
end

使用方式

基本使用方式

设置一个 UIView 距其父视图的边距为 10

view
    .fy_top(10)
    .fy_left(10)
    .fy_right(10)
    .fy_bottom(10)

或则

view.fy_edge(UIEdgeInsets(top: 10, left: 10, bottom: 10, right:10))

两个UIView间的关系

设置一个 UIView 的底部距离另一个 UIView 的顶部的距离为 20

view
    .fy_top(10)
    .fy_left(10)
    .fy_right(10)
    .fy_bottom(anotherView.chainTop + 20)

你可以在Demo中查看更多的代码

方圆的特点

  • 使用简单,无命名冲突(但不可混用)
  • 基于 UIView.frame 布局,性能优于 NSAutoLayout
  • 使用链式语句,代码优美简洁
  • 方圆在使用 Swift 和 ObjC 时语法仅两点不同,让你在 ObjC/Swift 环境下使用更为流畅:
    • ObjC 中链式代码的结尾需要添加 ;
    • ObjC 中链式代码的返回类型为 UIView 而非 instancetype

猜测式依赖

aView.fy_bottom() 中只有传递 anotherView.chainTop 是有效的,传入其他的 chainXXX 值,是不会产生实际效果的

同理

方法 调用
fy_top chainBottom
fy_bottom chainTop
fy_left chainRight
fy_right chainLeft

要完成的事情

  • 更多,更完善的 Demo/Test
  • 将字符串展示面积的计算方法融入『方圆』中,并且可以同时设定高度/宽度
  • 添加 fy_centerX/fy_centerY
  • 为逻辑部分添加充分的 Unit Test
  • 优化性能

写在最后

  • 欢迎随时联系我讨论问题
  • 欢迎 PR & issue

祝好 ~