我有以下代码
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"]
曾经,它认为这是同一个。如何“刷新”缓存并告诉它重新加载图像?
答案 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文件)。