CGAffineTransform.identity 在 Swift 2.3

CGAffineTransform.identity in Swift 2.3

Swift 3.0

var transform = CGAffineTransform.identity
transform = transform.scaledBy(x: scale, y: scale)
transform = transform.translatedBy(x: translation.x/scale, y: translation.y/scale)

我试过这个

let transform = CGAffineTransformIdentity
let scaleTransform = CGAffineTransformMakeScale(scale, scale)
let translateValue  = CGAffineTransformTranslate(transform,translation.x / scale , translation.y / scale)

但未获得所需结果,如有任何帮助,我们将不胜感激。

这个:

let scaleTransform = CGAffineTransformMakeScale(scale, scale)

不会缩放您的 transform。所以你只是在转换中犯了一个小错误。

因此,由于身份是默认的,这应该有效:

let transform      = CGAffineTransformMakeScale(scale, scale)
let translateValue = CGAffineTransformTranslate(transform, translation.x / scale , translation.y / scale)

对于 API,比如为 Swift 优化的 Core Graphics,您可以切换到 Objective-C 文档,它会找到相应的符号。这些符号与 Core Graphics 在 API 改进之前在 Swift 2.x 中使用的符号相同。

如果您这样做是为了 scaledBy(x:y:)

你会看到对应的符号是CGAffineTransformScale(注意是...Scale而不是...MakeScale)。

我没有现成的 Xcode 和 Swift 2.x,但是您的 Swift 2.3 代码看起来像这样:

var transform = CGAffineTransformIdentity
    transform = CGAffineTransformScale(transform, scale, scale)
    transform = CGAffineTransformTranslate(transform, translation.x / scale, translation.y / scale)