Bezzy
Bezzy 是一组用于构建 UIBezierPath 的便捷函数集。
Swift 版本的旧 UIBezierPath+DSL Cocoapod。
✓ 移动(支持相对于 currentPoint
定位)
let path = UIBezierPath { path in
path.add(.move, x: 0.5, y: 0.5)
path.add(.line, 0.5, .up)
path.add(.line, 0.5, .right)
path.add(.line, 0.5, .down)
path.add(.line, 1.0, .left)
path.add(.line, 0.5, .down)
path.add(.line, 0.5, .right)
path.close()
}
✓ 形状
let path = UIBezierPath { path in
path.add(.rect, at: CGRect(x: 0.5, y: 0.5, width: 10.0, height: 20.0))
path.add(.oval, center: CGPoint(x: 0.5, y: 0.5), radius: 20.0)
path.add(.roundedRect(cornerRadius: 4.0), center: CGPoint(x: 0.5, y: 0.5), size: CGSize(width: 40.0, height: 20.0))
}
✓ 路径
let path = UIBezierPath { path in
path.add(.closed, points: [
CGPoint(x: 0.0, y: 0.0),
CGPoint(x: 0.0, y: 1.0),
CGPoint(x: 1.0, y: 1.0),
CGPoint(x: 1.0, y: 0.0)
])
}
✓ 变换
let path = UIBezierPath { path in
path.add(.oval, x: 0.0, y: 0.0, width: 1.0, height: 1.0)
path.scale(0.5, .horizontal)
path.rotate(45 * .pi / 180, .anticlockwise)
path.translate(50.0, .right)
}
完整 API
UIBezierPath
// Constructors
init(_ closure: (UIBezierPath) -> Void)
static func make(_ path: UIBezierPath, _ closure: (UIBezierPath) -> Void) -> UIBezierPath
// Movements
func add(_ movement: Movement, to point: CGPoint)
func add(_ movement: Movement, x: CGFloat, y: CGFloat)
func add(_ movement: Movement, dx: CGFloat, dy: CGFloat)
func add(_ movement: Movement, r: CGFloat, θ: CGFloat)
func add(_ movement: Movement, _ r: CGFloat, _ direction: Direction)
// Shapes
func add(_ shape: Shape, at rect: CGRect)
func add(_ shape: Shape, origin: CGPoint, size: CGSize)
func add(_ shape: Shape, x: CGFloat, y: CGFloat, width: CGFloat, height: CGFloat)
func add(_ shape: Shape, center: CGPoint, radius: CGFloat)
func add(_ shape: Shape, center: CGPoint, size: CGSize)
// Paths
func add(_ path: Path, points: [CGPoint])
// Transforms
func translate(tx: CGFloat, ty: CGFloat)
func translate(r: CGFloat, θ: CGFloat)
func translate(_ r: CGFloat, _ direction: Direction)
func scale(sx: CGFloat, sy: CGFloat)
func scale(_ ratio: CGFloat, _ axis: Axis)
func rotate(_ angle: CGFloat, _ motion: Motion = .clockwise)
愿望单/API 点子
-
更好的圆弧便利函数
- 应能够沿某点绘制圆弧
- 应能够根据给定的半径从当前位置沿一定角度绘制圆弧
-
支持定位感知的变换
- 缩放
- 围绕 X 位置进行水平缩放
- 围绕中心进行水平缩放
- 围绕 Y 位置进行垂直缩放
- 围绕中心进行垂直缩放
- 围绕 X 位置水平翻转
- 围绕中心水平翻转
- 围绕 Y 位置垂直翻转
- 围绕中心垂直翻转
- 平移
- 将中心移动到某点
- 将原点移动到某点
- 旋转
- 围绕点进行旋转
- 围绕 X 和 Y 进行旋转
- 围绕中心进行旋转
- 围绕中心半转
- 围绕中心顺时针四分之一转
- 围绕中心逆时针四分之一转
- 组合
- 拉伸以适应大小,包括起始点
- 拉伸以适应大小,包括中心点
- 拉伸以适应矩形
- 拉伸以适应带内衬的矩形
- 带有和不含宽高比的填充矩形(查看 UIViewContentMode 可能性)
- 缩放