如果是我的班级,我会通过:
解决这个问题。class myUIImageView{
var image : UIImage? {
didSet {
if self.image != nil{
//do my stuff
}
}
}
//Other fields and functions
}
我想要的是被通知(观察者)
我确实找到了答案... Swift允许覆盖var
,因此这里没有真正的并发症。只需更改使用UIImageView
使用myUIImageView
的位置。
class myUIImageView : UIImageView{
override var image: UIImage?{
didSet {
if image != nil{
//do your stuff (add effects, layers, ...)
} else {
//clean your filter or added layer (remove your effects over the view)
}
}
}
}
update
请建议,如果您的UIImageView是集合视图的一部分,则应在收集重新查看时删除效果。否则,即使没有显示图像,它也会保持可见。
您应该将视图控制器的视图视为私有。唯一应该更改UIImageView的对象是它属于的UiviewController。
假设您这样做,那么视图控制器可以在更改图像视图的图像时做任何您想做的事情。