Swift 3 中的 CGAffineTransformConCat/ CGAffineTransformMakeScale

CGAffineTransformConCat/ CGAffineTransformMakeScale in Swift 3

我正在尝试为 swift 3:

更新函数的一部分
  let newLabelOffset = CGFloat(direction.rawValue) * originalFrame.size.height/2

    newLabel.transform = CGAffineTransformConCat(
      CGAffineTransformMakeScale(1,0)
      CGAffineTransformMakeTranslation(0,newLabelOffset)
    )

我听说使用 CGAffineTransformConCat 的新方法是 concatenating(_:) 但不完全确定如何根据上述 2 个转换进行设置。

初始化转换,

let trans1 = CGAffineTransform(scaleX: 0, y: 0)
let trans2 = CGAffineTransform(translationX: 0,y: 1)

连接,

trans1.concatenating(trans2)

在swift中,函数是可重载的。所有包含平移、缩放、旋转的矩阵变换由函数 CGAffineTransform() 使用不同的参数实现。

init(rotationAngle: CGFloat)  // rotate
init(scaleX: CGFloat, y: CGFloat) // scale
init(translationX: CGFloat, y: CGFloat) // translation
func concatenating(CGAffineTransform) -> CGAffineTransform // matrix multiplication

甚至,你完全可以用init(a: CGFloat, b: CGFloat, c: CGFloat, d: CGFloat, tx: CGFloat, ty: CGFloat)来定义变换矩阵,矩阵的构造是:

更多:Apple developer documentation of CGAffineTransform