试图获取UIImage的当前值

时间:2016-09-06 02:47:03

标签: ios swift uiimage

我的应用是幻灯片,每分钟更改一次,照片对应于当天的每分钟。我目前正在检查时间并每十分之一秒更新图像,因为这将在大型公共活动中的许多设备上进行。

相关位是:

@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。)

如何检查图像是否需要更改(即它不是我刚刚计算的当前时间)?

1 个答案:

答案 0 :(得分:0)

您不希望使用未缓存的图像来检查是否相等。每次生成时,图像对象都会不同(图像数据将是相同的,但是包装器对象将被重新生成,因此不相等;图像相等性不是基于实际的位内容)。

相反,请关闭图像名称。创建一个新的var,imageName,并在设置图像时进行设置。然后,当你的计时器触发时,检查你的缓存imageName是否与新的一致,并且只有在它们不同时才更改.image var。

相关问题