LayItOut
任何视图层次结构的布局都可以定义为一组线性方程系统,该系统只有唯一解。LayItOut 可让您轻松声明方程。
系统要求
- iOS 9.0+ / tvOS 9.0+ / macOS 10.11+
- Xcode 9.3+
- Swift 4.1+
使用方法
-
示例
LayItOut 的方程
// ①
purpleView.area.left == superView.marginedArea.left
// ④
purpleView.area.top == superView.marginedArea.top + 60
// ②
purpleView.area.right == orangeView.area.left - 20
// ⑤
orangeView.area.top == superView.marginedArea.top + 60
// ③
orangeView.area.right == superView.marginedArea.right
// ⑦
orangeView.area.bottom == superView.marginedArea.bottom - 60
// ⑥
purpleView.area.bottom == superView.marginedArea.bottom - 60
// ⑧
purpleView.area.width == orangeView.area.width * 0.5
我的首选方式
// ① & ④
purpleView.area.upperLeft == superView.marginedArea.upperLeft + CGPoint(x: 0, y: 60)
// ② & new ⑤
purpleView.area.upperRight == orangeView.area.upperLeft - CGPoint(x: 20, y: 0)
// ③ & ⑦
orangeView.area.lowerRight == superView.marginedArea.lowerRight - CGPoint(x: 0, y: 60)
// ⑥
purpleView.area.bottom == superView.marginedArea.bottom - 60
// ⑧
purpleView.area.width == orangeView.area.width * 0.5
iOS 中的坐标系原点位于绘图区域的左上角,正值向下和向右延伸。
-
视图区域
区域 | 描述 | 注意 |
---|---|---|
area: 面积 | 视图的框架 | |
marginedArea: 边界面积 | 视图的边距 | 仅限 iOS、tvOS |
readableArea: 读取区域 | 视图中可读宽度的区域 | 仅限 iOS、tvOS |
safeArea:SArea | 不会被栏和其他内容遮挡的区域 | 仅限 iOS、tvOS |
-
区域的项目
项目 | 注意 |
---|---|
宽度 |
|
高度 |
|
顶部 |
|
左边 |
|
底部 |
|
右边 |
|
中心X |
|
中心Y |
|
前导 |
|
尾随 |
|
第一基线 |
仅在区域中 |
最后一基线 |
仅在区域中 |
大小 |
由width 和height 组成 |
中心 |
由centerX 和centerY 组成 |
左上 |
由left 和top 组成 |
右上 |
由right 和top 组成 |
左下 |
由left 和bottom 组成 |
右下 |
由right 和bottom 组成 |
原点 |
upperLeft 在iOS、tvOS中,lowerLeft 在macOS中 |
-
优先级
通过--
指定优先级
view.area.width == 100 -- .defaultLow
-
更多
基于NSLayoutAnchor进行布局。请参阅自动布局指南 和NSLayoutAnchor以获取详细信息。
安装
要使用CocoaPods将LayItOut集成到Xcode项目中
pod 'LayItOut'
许可证
LayItOut采用MIT许可证发布。请参阅LICENSE获取详细信息。