我想发布图片,直到它们再次加载。 我用这段代码加载它们:
_backgroundImage1.image = [UIImage imageNamed:[NSString stringWithFormat:@"%ld.jpg", random() % 5]];
这就是我改变alpha
的方法if (backCount == 100) {
if (currentBack ==YES) {
_backgroundImage1.alpha = _backgroundImage1.alpha - 0.01;
_backgroundImage2.alpha = _backgroundImage2.alpha + 0.01;
if (_backgroundImage2.alpha >= 1) {
backCount = 0;
currentBack = NO;
NSString*path = [[NSBundle mainBundle] pathForResource:[NSString stringWithFormat:@"%u", arc4random() % 4] ofType:@"jpg"];
UIImage *Image = [UIImage imageWithContentsOfFile:path];
_backgroundImage1.image = Image;
//_backgroundImage1.image = nil;
//_backgroundImage1.image = [UIImage imageNamed:[NSString stringWithFormat:@"%ld.jpg", random() % 5]];
}
} else {
答案 0 :(得分:4)
imageNamed
缓存图片。如果您不希望缓存它,请使用imageWithContentsOfFile
。
正如imageNamed
文档警告我们:
如果您的图像文件只显示一次,并希望确保它不会添加到系统的缓存中,则应使用
imageWithContentsOfFile:
创建图像。这会将您的一次性图像保留在系统图像缓存之外,从而可能会改善应用程序的内存使用特性。
因此,你会:
NSString *path = [[NSBundle mainBundle] pathForResource:[NSString stringWithFormat:@"%ld", random() % 5] ofType:@"jpg"];
_backgroundImage1.image = [UIImage imageWithContentsOfFile:path];
你后来说过你正在寻找“一幅从一张随机图片渐渐消失的动画”。在这种情况下,每次更改图像时,您可能只想这样做:
// fade from current image to new image
[UIView transitionWithView:imageView duration:0.5 options:UIViewAnimationOptionTransitionCrossDissolve animations:^{
NSString *path = [[NSBundle mainBundle] pathForResource:[NSString stringWithFormat:@"%ld", random() % 5] ofType:@"jpg"];
imageView.image = [UIImage imageWithContentsOfFile:path];
} completion:^(BOOL finished) {
// do whatever you want at the end
}];
答案 1 :(得分:0)
使用ARC:
_backgroundImage1=nil;
假设-backgroundImage1是保留给图像的唯一(强)引用。
没有ARC
[_backgroundImage1.image release];
嗯,假设_backgroundImage1是UIImageView的实例或者仍然想要访问其属性图像的任何内容,这可能是危险的。所以
_backgroundImage1=nil;
在这里也是一个好主意。
答案 2 :(得分:0)
imageNamed:在本地缓存图像。来自文档:
此方法在系统缓存中查找具有指定名称的图像对象,并返回该对象(如果存在)。如果匹配的图像对象尚未在缓存中,则此方法从指定的文件加载图像数据,对其进行缓存,然后返回结果对象。
如果您希望每次都从磁盘加载图像,请使用imageWithContentsOfFile:
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"yourImageName" ofType:@"yourImageFileType"];
UIImage *image = [UIImage imageWithContentsOfFile:filePath];