我有一个带有 CustomCell 的表,在绘制单元格时,我创建了一个 UIImageView 并将其作为子视图添加到 scrollView。该图像还将其 contentMode 设置为 UIViewContentModeScaleAspectFit。问题是当绘制下一个单元格时,如果图像小于前一个图像,那么前一个图像的边界仍然存在。
代码是这样的;
UIImageView *smallImgView = [[UIImageView alloc]initWithFrame:CGRectMake(picXCount,0, 216, 216)];
smallImgView.image = nil;
smallImgView.contentMode = UIViewContentModeScaleAspectFit;
我现在想我应该从图像中收集尺寸并将 CGRectMake 设置为该大小而不是使用 contentMode 但如果有一个简单的修复......
将图像设置为 nil 不起作用,另一个想法是先加载空白图像(这很讨厌)。任何想法,将不胜感激。
编辑
这是细胞方法
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
cellID = @"Cell"
newsItemCell *cell = [tableView dequeueReusableCellWithIdentifier:cellID forIndexPath:indexPath];
if (cell == nil)
{
cell = [[newsItemCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellID];
}
for(int imgCount = 0; imgCount < [[newsExtraImages objectAtIndex:indexPath.row] count]; imgCount++)
{
UIImageView *smallImgView = [[UIImageView alloc]initWithFrame:CGRectMake(picXCount,0, 216, 216)];
smallImgView.image = nil;
smallImgView.contentMode = UIViewContentModeScaleAspectFit;
[smallImgView setImage:[allImages objectAtIndex:[[[newsExtraImages objectAtIndex:indexPath.row] objectAtIndex:imgCount] intValue]]];
picXCount = picXCount + 216 + 12;
[cell.newsItemImages addSubview:smallImgView];
}
[cell.newsItemImages setContentSize:CGSizeMake(picXCount, 216)];
return cell;
}
简而言之,它会检查一个 3D 数组以查看该单元格中有多少图像,如果有 5 个,则每次将它们添加到视图时都会创建 UIImageView 5 次。下一个单元格是下一个图像列表,可能只有 3 英寸,依此类推。
picXCount 跟踪在滚动视图 (newsItemImages) 中水平绘制图像的位置。内容也被设置为滚动。