swift2 Swift 2.3中CGAffine变换恒等式

dkqlctbz  于 2022-11-06  发布在  Swift
关注(0)|答案(2)|浏览(185)

雨燕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)

但没有得到所需的结果,任何帮助将不胜感激。

ibrsph3r

ibrsph3r1#

对于像Core Graphics这样的已经为Swift优化的API,你可以切换到Objective-C文档,它会找到相应的符号。这些符号与Core Graphics在Swift 2.x中使用的符号相同,在API优化之前。
如果对scaledBy(x:y:)执行此操作

您将看到对应的符号是CGAffineTransformScale(注意它是... Scale而不是... MakeScale)。

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

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

pexxcrt22#

这一点:

let scaleTransform = CGAffineTransformMakeScale(scale, scale)

不会缩放您的transform。所以您只是在转换中犯了一个小错误。
因此,由于该标识是默认的,因此应该可以:

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

相关问题