【问题标题】:Theres is a way to be notified in swift if an UIImageView image has been set?如果设置了 UIImageView 图像,有一种方法可以快速通知吗?
【发布时间】:2015-05-05 18:06:53
【问题描述】:

如果 UIImageView 是我的班级,我会通过这样做来解决这个问题:

class myUIImageView{
  var image : UIImage? {
   didSet {
    if self.image != nil{
      //do my stuff
    }
   }
  }

  //Other fields and functions
}

我想要的是被通知(Observer Like

【问题讨论】:

  • 尝试使用 Post Notification 会解决你的问题
  • @MalavSoni 你能详细说明一下吗?什么是发布通知以及如何使用它?

标签: ios swift uiimageview uikit


【解决方案1】:

我确实找到了答案... 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)
        }
    }
 }

}

更新

建议,如果您的 UIImageView 是 Collection View 的一部分,您应该在集合重用您的视图时移除效果。否则即使没有显示图像,它也会保持可见。

【讨论】:

  • 您可以通过覆盖 prepareForReuse() AppleDoc来重置您的收藏视图
【解决方案2】:

您应该将视图控制器的视图视为私有视图。唯一应该改变 UIImageView 的对象是它所属的 UIViewController。

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

【讨论】:

  • 我想做的是了解图像何时设置为在视图上应用一些效果......不知道你是否记得......这是我的延续以前关于 UIImageView 上的渐变背景的问题。我现在从服务器加载这些图像,在等待 UIImage 加载的空白区域上看起来很奇怪。
猜你喜欢
  • 1970-01-01
  • 2021-01-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-15
  • 2021-03-04
  • 1970-01-01
相关资源
最近更新 更多