如果已设置 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。

假设你这样做了,那么当视图控制器改变图像视图的图像时,它可以做任何你想做的事。