删除以编程方式添加UIImageView

时间:2014-10-26 02:11:02

标签: swift uiimageview

我正在创建一个按钮点击生成扑克牌的游戏。我正在使用此代码执行此操作:

var imageView = UIImageView(frame: CGRectMake(CGFloat(pos), 178, 117, 172));
    var image = UIImage(named: "\(deck[Int(card)])_of_\(suits[Int(arc4random_uniform(4))])")
    imageView.image = image
    self.view.addSubview(imageView)

但我有另一个重置游戏的按钮。我希望只能删除以编程方式添加的卡片。任何有关这方面的帮助将不胜感激。

1 个答案:

答案 0 :(得分:8)

您可以在某些媒体资源中跟踪imageView,当您想删除它时,您只需:

imageView.removeFromSuperview()  // this removes it from your view hierarchy 
imageView = nil;                 // if your reference to it was a strong reference, make sure to `nil` that strong reference

顺便说一句,正如您所知,UIImage(named:...)会将图像缓存在内存中。如果你想要,那很好,但如果没有,你可能想要UIImage(contentsOfFile:...)使用该资源的完全限定路径。如果您使用UIImage(named:...),即使删除了UIImageView,图像也会保留在内存中。正如文档所说:

  

如果您的图像文件只显示一次,并希望确保它不会添加到系统的缓存中,则应使用imageWithContentsOfFile:创建图像。这会将您的一次性图像保留在系统图像缓存之外,从而可能会改善应用程序的内存使用特性。