[英]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.