忽略setImage上的图像缓存:

时间:2012-12-17 14:46:10

标签: uiimageview cache-control

我有以下代码

NSString *myPath = [NSString stringWithFormat:@"../Documents/%@",@"bla.png"];
[imgView setImage:[UIImage imageNamed:myPath]];    // works fine
[self updateMyImage:[UIImage imageNamed:myPath]];  // loads another image as bla.png (works fine)
[imgView setImage:[UIImage imageNamed:myPath]];    // displays the old image, *not* the new one

图像加载到updateMyImage中:(我打开它(来自模拟器的磁盘),它是“ new ”一个) 但imgView显示“”之一。我猜它是一个缓存问题。由于iOS已加载[UIImage imageNamed:@"bla.png"] 曾经,它认为这是同一个。如何“刷新”缓存并告诉它重新加载图像?

1 个答案:

答案 0 :(得分:0)

setImage:从缓存中加载(,因为你猜测)。 在'UIImage类参考'(在xcode的管理器窗口中)中查找它

几行下来给出你答案:使用initWithContentsOfFile:方法。 因此,在更改图像后执行以下操作:

 NSString *myAbsolutePath = [NSString stringWithFormat:@"%@/%@", [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0],@"bla.png"]];
 UIImage *myImg = [[UIImage alloc] initWithContentsOfFile:myAbsolutePath];
 [imgView setImage:myImg];

现在imgView将拥有新图像(只要myAbsolutePath上存在img文件)。