2013-05-30 3 views
3

Я пытаюсь загрузить изображение из NSUrl imageURL и отобразить его в UIImageView с плотностью пикселей сетчатки, добавив @ 2x; это должно отображаться на iPhone 4 или новее. Я использовал некоторый код отсюда: How do I download and save a file locally on iOS using objective C?iPhone: Загрузка изображения затем отображается в UIImageView с расширением @ 2x

Он ничего не показывает на изображенииПросмотрите, когда я его запустил, а последняя строка 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,@"[email protected]"]; 
    [imageData writeToFile:filePath atomically:YES]; 
} 
else NSLog(@"Error when loading image!!!"); 

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

}

EDIT: Хорошо, я установил, что. Я чувствую себя глупо. Я должен был поставить в

imageData = [NSData dataWithContentsOfFile:@filePath]; 

и поставить Filepath в области видимости nstead просто положить в @ «[email protected]».

+0

Я бы предложил использовать AFNetworking. Кроме того, dataWithContentsOfURL - это синхронный вызов, поэтому его следует использовать только в коде, запущенном в фоновом потоке. –

ответ

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]; 
} 
+0

О, отлично! Даже после того, как я исправил свой код, он все еще не работал правильно. Мой код определенно казался слишком сложным, но я подумал, что так оно и будет. – sudo

Смежные вопросы