4

NSUrl imageURL から画像をダウンロードし、@2x; を追加して網膜ピクセル密度の UIImageView に表示しようとしています。これは iPhone 4 以降で表示されます。ここからいくつかのコードを使用しました:目的の C を使用して、iOS でローカルにファイルをダウンロードして保存するにはどうすればよいですか?

開始時に 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];

}

編集:OK、私はそれを修正しました。私はばかだと感じます。入れるはずだった

imageData = [NSData dataWithContentsOfFile:@filePath];

@"0@2x.png" を入れるだけでなく、filePath をスコープに入れます。

4

1 に答える 1

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];
}
于 2013-05-30T17:02:27.147 に答える