2016-04-21 73 views
4

比方說,我擴展使用CGAffineTransformScale像這樣一個UILabel:斯威夫特CGAffineTransformScale的規模,而不是由一個規模

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幀的一半大小,而不是累積地縮放它?

回答

13

斯威夫特3

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

您正在縮放現有的轉換。只要創建一個新的轉換:

self.text.transform = CGAffineTransformMakeScale(scale, scale) 
+1

或'CGAffineTransformScale(CGAffineTransformIdentity,規模,規模)' – ozgur