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 个枚举:Transform
、Transform3D
和 Rotation
。
一个方便的枚举,允许开发者轻松定义他们想要的旋转。用例很容易理解。
.Degrees(degrees: CGFloat)
.Radians(radians: Double)
Darwin.C.Math
的 M_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)
一组方法,分别计算转换对 CGRect
、CGSize
和 CGPoint
的影响。
public func transformedRect(rect: CGRect) -> CGRect
public func transformedSize(size: CGSize) -> CGSize
public func transformedPoint(point: CGPoint) -> CGPoint
返回底层的 CGAffineTransform
public var CGATransform: CGAffineTransform { get }
.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
=
操作符。在 UIView
中添加了两个变量,用于为 Transform
和 Transform3D
添加可设置和可获取的接口。
var affineTransform: Transform
var transform3D: Transform3D
随时可以通过电子邮件与我联系 [email protected]。我很乐意听取您的想法,或者看到使用此功能的示例。
您也可以在推特上联系我 @JeffHurray。
如果您想添加功能,请打开一个问题并/或创建一个拉取请求。
Transform.swift 在 MIT 许可下可用。有关更多信息,请参阅 LICENSE 文件。