Bezzy 1.4.0

Bezzy 1.4.0

测试已测试
语言语言 SwiftSwift
许可证 MIT
发布上次发布2019年8月
SPM支持 SPM

Daniel Clelland 维护。



Bezzy 1.4.0

  • Daniel Clelland

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 可能性)