2013-08-09 2 views
0

Я пытаюсь загрузить удаленное изображение на своем изображении с помощью следующего кода. displayImage упоминается с ImageView в testview.xibСтранное поведение загрузки удаленных изображений UIImageview

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    self.displayImage.userInteractionEnabled = YES; 

    NSMutableURLRequest *requestWithBodyParams = [NSMutableURLRequest requestWithURL:self.gImg.URL]; 

    NSData *imageData = [NSURLConnection sendSynchronousRequest:requestWithBodyParams returningResponse:nil error:nil]; 

    self.originalImage = [UIImage imageWithData:imageData]; 
    self.displayImage.contentMode = UIViewContentModeScaleAspectFit; 
    self.displayImage = [[UIImageView alloc] initWithImage:self.originalImage]; 
    [self.displayImage setImage:self.originalImage]; 

    NSLog(@"DisplayImage Object:%@",self.displayImage); 

    NSLog(@"height of Displayimage image:%.f",self.displayImage.image.size.height); 
} 

Но изображение не показывается. Я уверен, что изображение было загружено на изображение. Вот выход журнала:

DisplayImage Object:<UIImageView: 0x11033270; frame = (0 0; 720 632); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x1104c620>> 
height of Displayimage image:632 
+0

Как только вы установили образ с помощью imageWithData, сохраните изображение в пути к файлу в комплекте приложения. – iphonemaclover

+0

Вы когда-нибудь добавляли 'displayImage' в качестве подвид вашего основного вида? – Wain

+0

Приводятся ли данные в imagedata? – IronManGill

ответ

1

Создание очереди доставки:

dispatch_queue_t backgroundQueue = dispatch_queue_create("com.mayapp", NULL);   

Используйте NSData метод dataWithContentsOfURL и загрузить изображение в фоновом потоке:

dispatch_async(backgroundQueue, ^(void) { 

     NSData *data = [NSData dataWithContentsOfURL:requestWithBodyParams]; 
     //as soon as the image is downloaded, draw image in a main thread 
    dispatch_sync(dispatch_get_main_queue(), ^(void) { 
     self.originalImage = [UIImage imageWithData:data]; 

     self.displayImage.contentMode = UIViewContentModeScaleAspectFit; 
     self.displayImage = [[UIImageView alloc] initWithImage:self.originalImage]; 
     [self.displayImage setImage:self.originalImage]; 

});//close main block  
});//background block  
1

Этот пример кода работает отлично меня:

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    NSURL *url = [NSURL URLWithString:@"http://iceclearmedia.com/wp-content/uploads/2011/04/SEO-and-url-Shorteners.jpg"]; 
    NSData* imageData = [[NSData alloc] initWithContentsOfURL:url]; 
    UIImage* image = [[UIImage alloc] initWithData:imageData] ; 

    [self performSelectorOnMainThread:@selector(displayImage:) withObject:image waitUntilDone:NO]; 
} 

- (void)displayImage:(UIImage *)image { 
    [self.imagedownload setImage:image]; //UIImageView 
} 
2

Здесь я изменен ваш код: Не нужно выделять UIImageView в коде, если у вас есть UIImageView в .xib.

NSURL *gImg = [NSURL URLWithString:@"http://www.vinfotech.com/sites/default/files/iphoe-app-design-ios7-way-12.jpg"]; 
    NSMutableURLRequest *requestWithBodyParams = [NSMutableURLRequest requestWithURL:gImg]; 

    NSData *imageData = [NSURLConnection sendSynchronousRequest:requestWithBodyParams returningResponse:nil error:nil]; 

     UIImage *originalImage = [UIImage imageWithData:imageData]; 
      self.displayImage.contentMode = UIViewContentModeScaleAspectFit; 
     // self.displayImage = [[UIImageView alloc] initWithImage:originalImage]; 
       [self.displayImage setImage:originalImage]; 

     NSLog(@"DisplayImage Object:%@",self.displayImage);  
       NSLog(@"height of Displayimage image:%.f",self.displayImage.image.size.height); 

Надеюсь, что этот код поможет вам.

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