Transform.swift 0.1.2

Transform.swift 0.1.2

测试已测试
语言语言 SwiftSwift
许可证 MIT
发布最后发布2016年5月
SPM支持 SPM

Jeff Hurray 管理。



Transform.swift

Transform.swift 提供了为 UIView 和其子类应用转换的更简洁的 API。

let scale = Transform.Scale(sx: 0.5, sy: 0.5)
let rotate = Transform.Rotate(rotation: .Degrees(45))
let scaleAndRotate = scale + rotate
myView.transform += scaleAndRotate

myView.transform3D = .Translate(tx: 40, ty: 0, tz: 100).CATransform

安装

使用方法

Transform.swift公开了 3 个枚举:TransformTransform3DRotation

旋转

一个方便的枚举,允许开发者轻松定义他们想要的旋转。用例很容易理解。

  • .Degrees(degrees: CGFloat)
  • .Radians(radians: Double)
    • 接受一个浮点数,使其更容易传递来自 Darwin.C.MathM_PI 定义

转换

  • .Identity
  • .Translate(tx: CGFloat, ty: CGFloat)
  • .Scale(sx: CGFloat, sy: CGFloat)
  • .Rotate(rotation: Rotation)
  • .Init(a: CGFloat, b: CGFloat, c: CGFloat, d: CGFloat, tx: CGFloat, ty: CGFloat) ,适用于喜欢冒险的类型😎
  • .Custom(t: CGAffineTransform)

方法

一组方法,分别计算转换对 CGRectCGSizeCGPoint 的影响。

public func transformedRect(rect: CGRect) -> CGRect
public func transformedSize(size: CGSize) -> CGSize
public func transformedPoint(point: CGPoint) -> CGPoint

返回底层的 CGAffineTransform

public var CGATransform: CGAffineTransform { get }

3D 转换

  • .Identity
  • .Translate(tx: CGFloat, ty: CGFloat, tz: CGFloat)
  • .Scale(sx: CGFloat, sy: CGFloat, sz: CGFloat)
  • .Rotate(rotation: Rotation, x: CGFloat, y: CGFloat, z: CGFloat)
  • .Affine(t: CGAffineTransform)
  • .Custom(t: CATransform3D)

方法

返回底层的 CATransform3D

public var CATransform : CATransform3D { get }

如果可以将 3D 转换转换为仿射转换,则返回一个 true,如果不能,则返回一个 false

public var isAffine: Bool { get }

返回底层的 CGAffineTransform 。如果 3D 转换不能转换为仿射转换,则抛出一个错误。

public func affineTransform() throws -> CGAffineTransform 

共享工具

  • 取反:let inverted = t.inverted
  • 确定是否为恒等变换:let isIdentity = t.isIdentity
  • 连接:let scaleAndMove = .Scale(sx: 0.5, sy:1).concat(.Translate(tx: 40, ty: -100))

运算符

  • == 等价
    • 返回 布尔值
    • Transform == Transform
    • Transform == CGAffineTransform
    • Transform3D == Transform3D
    • Transform3D == CATransform3D

  • + 相加
    • 返回相加的类型
    • Transform + Transform
    • CGAffineTransform + CGAffineTransform
    • Transform3D + Transform3D
    • CATransform3D + CATransform3D

  • += 赋值
    • 修改操作符左边的变量
    • Transform += Transform
    • CGAffineTransform += Transform
    • Transform3D += Transform3D
    • CATransform3D += Transform3D

  • <- 赋值
    • 将值赋给操作符左边的变量
    • CGAffineTransform <- Transform
    • CATransform3D <- Transform3D
    • 将变换枚举赋值给旧API的语义,因为无法重载=操作符。

UIView 扩展

UIView 中添加了两个变量,用于为 TransformTransform3D 添加可设置和可获取的接口。

var affineTransform: Transform
var transform3D: Transform3D

联系方式

随时可以通过电子邮件与我联系 [email protected]。我很乐意听取您的想法,或者看到使用此功能的示例。

您也可以在推特上联系我 @JeffHurray

贡献

如果您想添加功能,请打开一个问题并/或创建一个拉取请求。

许可

Transform.swift 在 MIT 许可下可用。有关更多信息,请参阅 LICENSE 文件。