Swift CGAffineTransformScale将一个对象按比例缩放,而不是缩放参数。

7

假设我使用CGAffineTransformScale缩放UILabel:

let scale = 0.5
text = UILabel(frame: CGRectMake(100, 100, 100, 100))
text.text = "Test"

UIView.animateWithDuration(2.0, delay: 0.0, options: UIViewAnimationOptions.CurveEaseIn, animations: {
    self.text.transform = CGAffineTransformScale(self.text.transform, scale, scale)
}, completion: {(value : Bool) in
    print("Animation finished")
})

当我想将UILabel缩小一半时,这个方法很有效。但如果我再次调用这段代码,它会再次缩小一半,导致缩放比例变成0.25。

是否可以使用CGAffineTransformScale将其始终缩放为原始UILabel框架的一半大小,而不是累积缩放?

3个回答

16

Swift 3:

text.transform = CGAffineTransform.identity
UIView.animate(withDuration: 0.25, animations: {
   self.text.transform = CGAffineTransform(scaleX: scale, y: scale)
})

6
您正在扩展现有的转换。只需创建一个新的转换即可:
self.text.transform = CGAffineTransformMakeScale(scale, scale)

1
CGAffineTransformScale(CGAffineTransformIdentity, scale, scale) 可以将一个视图或图层按比例缩放。 - Ozgur Vatansever

0

Swift 版本:

self.text.transform = CGAffineTransform.init(scaleX: scaleFactorX, y: scaleFactorY)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接