UIImageViewをサブクラス化するので、画像プロパティが設定されるたびにアニメーションが発生します。以下は成功しました:UIImageViewの画像取得/設定メソッドをオーバーライドする
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をサブクラス化し、UIImageViewの 'image'プロパティを変更する 'img'という全く新しい変数を追加しました。
エンドユーザがAnimatedImageViewの 'image'プロパティを変更する可能性があるという問題があります。
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メソッドを呼び出しますので、これはstackoverflowのが原因と案の定。では、UIImageViewの 'image'プロパティのgetter/setterメソッドをオーバーライドする正しい方法は何ですか?
もちろんです。ありがとうございました! – cph2117