Sto creando una sottoclasse di UIImageView, in modo che ogni volta che si imposta la proprietà dell'immagine si verifichi un'animazione. Quanto segue ha avuto successo:Sovrascrittura dei metodi getter/setter dell'immagine di 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;
})
}
}
Questa non è una sorpresa. Ho creato una sottoclasse di UIImageView e aggiunto una variabile completamente nuova chiamata 'img', che a sua volta modifica la proprietà 'immagine' di UIImageView.
Il problema è che l'utente finale potrebbe ancora alterare la proprietà "immagine" di 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;
})
}
}
abbastanza sicuro che questo provoca uno StackOverflow perché quando chiamo self.image = newValue
ripetutamente chiama il metodo setter che ho sovrascritto nel mio sottoclasse. Quindi, qual è il modo giusto per sovrascrivere i metodi getter/setter della proprietà 'image' su UIImageView
Omg ovviamente. Grazie! – cph2117