iPhone:下载图像然后使用@ 2x扩展在UIImageView中显示

时间:2013-05-30 16:59:29

标签: ios iphone objective-c uiimageview retina-display

我正在尝试从NSUrl imageURL下载图像并通过添加@ 2x将其显示在具有视网膜像素密度的UIImageView中;这将显示在iPhone 4或更高版本上。我在这里使用了一些代码:How do I download and save a file locally on iOS using objective C?

当我启动它时,它在imageView上没有显示任何内容,并且最后一个NSLog行打印出图像的一些非常小的尺寸,表明它没有真正下载一个。我的代码有什么问题,除了它有非常糟糕的错误检查?

- (void) presentImage: (NSURL*) imageURL{
NSData * imageData = [NSData dataWithContentsOfURL:imageURL];
NSLog([imageURL description]);

if ( imageData )
{
    NSArray   *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString  *documentsDirectory = [paths objectAtIndex:0];

    NSString  *filePath = [NSString stringWithFormat:@"%@/%@", documentsDirectory,@"0@2x.png"];
    [imageData writeToFile:filePath atomically:YES];
}
else NSLog(@"Error when loading image!!!");

imageData = [NSData dataWithContentsOfFile:@"0@2x.png"];
UIImage *image = [[UIImage alloc] initWithData: imageData];
NSLog(@"%f1 x %f2", image.size.width, image.size.height);
[self.imageView setImage: image];

}

编辑:好的,我解决了这个问题。我觉得我好笨。我应该放入

imageData = [NSData dataWithContentsOfFile:@filePath];

并将filePath放在范围内,而不是只输入@“0@2x.png”。

1 个答案:

答案 0 :(得分:4)

我认为你的问题过于复杂。使用此方法:

+ (UIImage *)imageWithData:(NSData *)data scale:(CGFloat)scale

当您有视网膜图像时,将比例设置为2.0

-(void)presentImage:(NSURL*)imageURL {
    NSData *imageData = [NSData dataWithContentsOfURL:imageURL];
    UIImage *image = [UIImage imageWithData:imageData scale:2.0];
    [self.imageView setImage: image];
}