如果已设置 UIImageView 图像,是否有一种方法可以在 swift 中得到通知?
Theres is a way to be notified in swift if an UIImageView image has been set?
如果 UIImageView 是我的 class 我会通过以下方式解决这个问题:
class myUIImageView{
var image : UIImage? {
didSet {
if self.image != nil{
//do my stuff
}
}
}
//Other fields and functions
}
What I want is to be notified (Observer Like)
我确实找到了答案...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)
}
}
}
}
更新
Be advice, if your UIImageView is part of a Collection View you should remove the effect when the collection reuses your view. Otherwise it will remain visible even if no image is being shown.
您应该将视图控制器的视图视为私有的。唯一应该改变 UIImageView 的对象是它所属的 UIViewController。
假设你这样做了,那么当视图控制器改变图像视图的图像时,它可以做任何你想做的事。
如果 UIImageView 是我的 class 我会通过以下方式解决这个问题:
class myUIImageView{
var image : UIImage? {
didSet {
if self.image != nil{
//do my stuff
}
}
}
//Other fields and functions
}
What I want is to be notified (Observer Like)
我确实找到了答案...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)
}
}
}
}
更新
Be advice, if your UIImageView is part of a Collection View you should remove the effect when the collection reuses your view. Otherwise it will remain visible even if no image is being shown.
您应该将视图控制器的视图视为私有的。唯一应该改变 UIImageView 的对象是它所属的 UIViewController。
假设你这样做了,那么当视图控制器改变图像视图的图像时,它可以做任何你想做的事。