簡體   English   中英

在tableViewCell內部動態更改UIImageView的寬度和高度

[英]change width and height of UIImageView dynamically inside tableViewCell

我有自定義的UITableViewCell由xib文件制成。 我在該單元格內有UIImageView,它設置了固定的寬度和高度以及40x40並設置為隱藏

然后在cellForRowAtIndexPath數據源中進行委托。 我檢查該單元格的數據源是否包含image的URL。 如果有,我將ImageView設置為出現。並在下載完成后使用SDWebImage下載圖像並在完成塊中調整imageView.frame的大小。

實際上,乍一看它工作正常。我得到了大小和下載的圖像相同的ImageView。 但是,如果我向下滾動,然后再次向上滾動到上部單元格。 它只是重新出現為40x40大小的增益。 有人可以幫忙嗎?

這是代碼,以防萬一您好奇。 我猜代碼沒有問題,問題是我如何在.xib文件中設置UIImageView,但我不知道如何解決它。

//    -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

if([item postImageURLString]){

        void (^completionBlock)(UIImage *image, NSError *error, SDImageCacheType cacheType) = ^(UIImage *image, NSError *error, SDImageCacheType cacheType) {

            CGRect imageFrame = CGRectMake(cell.frame.size.width/3,cell.frame.size.height -5 -image.size.height, image.size.width, image.size.height);

            [cell.postImageView setFrame:imageFrame];


        };

            [cell.postImageView setHidden:NO];


        [cell.postImageView setImageWithURL:URL completed:completionBlock ];

    }

我懷疑這與具有40x40圖像視圖的tableview重用單元格有關。 如果已經緩存了圖像,則SDWebImage似乎不會運行您的完成塊 ,因此,如果tableview重繪了單元格並且您的圖像已經被緩存,則它永遠不會執行調整大小的代碼。 您需要將代碼添加到cellForRowAtIndexPath方法中,該方法檢查圖像是否已經緩存,以及是否調整圖像視圖的大小。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM