2017-03-01 4 views
0

これはUIImageView+AFNetworkingライブラリからです。AFNetworkingはUITableViewCellのimageViewイメージをURLで設定すると、イメージビューフレームはまだイメージ設定後も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に追加。この場合の画像ビューUITableViewCellのimageViewにはまだ0,0,0,0のフレームがあります。セルをクリックするとイメージビューが更新されますが、イメージが表示されません。

UIImageViewのサイズを変更するにはどうすればよいですか?

Iフレームの設定

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

の溶液に基づく

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]; 

に入れてみました。私はそこに大きなフレームをログアウトすることができますが、それは画面に表示されません。

答えて

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; 
関連する問題