我繼承了UIImageView,以便每次設置圖像屬性時都會發生動畫。以下是成功的:覆蓋UIImageView的圖像getter/setter方法
import UIKit
class AnimatedImageView: UIImageView {
var img: UIImage! {
get {
return self.image
}
set {
self.image = newValue
UIView.animateWithDuration(0.5, delay: 0.4, usingSpringWithDamping: 0.2, initialSpringVelocity: 5.0, options: .CurveEaseIn, animations: {_ in
self.transform = CGAffineTransformMakeScale(1.1, 1.1);
}, completion: {_ in
self.transform = CGAffineTransformIdentity;
})
}
}
這並不奇怪。我分類了UIImageView並添加了一個全新的變量'img',這反過來又修改了UIImageView的'圖像'屬性。
問題是最終用戶可能會想到仍然會改變AnimatedImageView的'圖像'屬性。
import UIKit
class AnimatedImageView: UIImageView {
override var image: UIImage! {
get {
return self.image
}
set {
self.image = newValue
UIView.animateWithDuration(0.5, delay: 0.4, usingSpringWithDamping: 0.2, initialSpringVelocity: 5.0, options: .CurveEaseIn, animations: {_ in
self.transform = CGAffineTransformMakeScale(1.1, 1.1);
}, completion: {_ in
self.transform = CGAffineTransformIdentity;
})
}
}
果然這會導致一個計算器,因爲當我打電話self.image = newValue
它反覆調用,我在我的子類中已替換setter方法。那麼,什麼是正確的方式來覆蓋UIImageView'圖像'屬性的getter/setter方法
Omg當然。謝謝! – cph2117