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
- ObjC 中链式代码的结尾需要添加
猜测式依赖
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
祝好 ~