我的应用是幻灯片,每分钟更改一次,照片对应于当天的每分钟。我目前正在检查时间并每十分之一秒更新图像,因为这将在大型公共活动中的许多设备上进行。
相关位是:
@IBOutlet weak var theBrokenWatch: UIImageView!
if theBrokenWatch.image != UIImage(named: theImageName as String) {
theBrokenWatch.image = getUncachedImage(named: theImageName)
print("changed image to", theCurrentTime as String)
}
func getUncachedImage (named name : String) -> UIImage? {
if let imgPath = NSBundle.mainBundle().pathForResource(name, ofType: nil) {
return UIImage(contentsOfFile: imgPath)
}
return nil
}
现在if
语句不起作用。当我使用imageNamed:
设置图像时它确实有效,但是720张照片存在重大内存问题。 (计算CurrentTime并将匹配的图像路径构建为ImageName。)
如何检查图像是否需要更改(即它不是我刚刚计算的当前时间)?
答案 0 :(得分:0)
您不希望使用未缓存的图像来检查是否相等。每次生成时,图像对象都会不同(图像数据将是相同的,但是包装器对象将被重新生成,因此不相等;图像相等性不是基于实际的位内容)。
相反,请关闭图像名称。创建一个新的var,imageName,并在设置图像时进行设置。然后,当你的计时器触发时,检查你的缓存imageName是否与新的一致,并且只有在它们不同时才更改.image var。