2017-03-01 73 views
0

這是來自UIImageView+AFNetworking庫。AFNetworking使用URL設置UITableViewCell的imageView圖像,設置圖像後imageview框仍爲0

AFImageRequestOperation *requestOperation = [[AFImageRequestOperation alloc] initWithRequest:urlRequest]; 
    [requestOperation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) { 
     if ([[urlRequest URL] isEqual:[[self.af_imageRequestOperation request] URL]]) { 
      if (success) { 
       success(operation.request, operation.response, responseObject); 
      } else { 
       self.image = responseObject; 
       [self setNeedsLayout]; 
       [self setNeedsDisplay]; 
      } 

      self.af_imageRequestOperation = nil; 
     } 

setNeedsLayoutsetNeedsDisplay增加。在這種情況下,imageview(UITableViewCell的imageView)仍具有0,0,0,0框架。單擊單元格將刷新imageview,否則圖像不顯示。

如何強制調整UIImageView的大小?

我試圖把在

self.image = responseObject; 
        self.frame = CGRectMake(self.frame.origin.x, self.frame.origin.y, 
               self.image.size.width, self.image.size.height); 
        [self setNeedsDisplay]; 
        [self setNeedsLayout]; 

基於設置框的

How to make UIImageView automatically resize to the size of the image loaded

的溶液。我可以在那裏註銷一個更大的框架,但它不會顯示在屏幕上。

回答

2

它很難說沒有看到你的代碼的其餘部分,但我相信這個問題可能是在請求操作的完成處理程序:

 if (success) { 
      success(operation.request, operation.response, responseObject); 
     } else { 
      self.image = responseObject; 
      [self setNeedsLayout]; 
      [self setNeedsDisplay]; 
     } 

你似乎只設置圖像時,請求失敗。將它移到成功塊可能會解決它。

 if (success) { 
      success(operation.request, operation.response, responseObject); 
      self.image = responseObject; 
      [self setNeedsLayout]; 
      [self setNeedsDisplay]; 
     } 

有你爲什麼不使用AFNetworking/UIImageView的+ AFNetworking.h方法的具體原因是什麼?看起來他們會適合你的用例。

- (void)setImageWithURL:(NSURL *)url 
     placeholderImage:(nullable UIImage *)placeholderImage; 

- (void)setImageWithURLRequest:(NSURLRequest *)urlRequest 
      placeholderImage:(nullable UIImage *)placeholderImage 
        success:(nullable void (^)(NSURLRequest *request, NSHTTPURLResponse * _Nullable response, UIImage *image))success 
        failure:(nullable void (^)(NSURLRequest *request, NSHTTPURLResponse * _Nullable response, NSError *error))failure;