我有一个自定义UITableViewController
,并且在其中我动态地设置了一个UITableViewCell
带有样式的样式UITableViewCellStyleSubtitle
。一切都很好,除了当一个单元格被重新使用时,它的imageView
属性不尊重我的contentMode
或clipsToBounds
设置。理想情况下,我希望内容遵循默认大小/形状(我认为是 40x40 正方形)。
还有其他帖子(下面的链接)建议对图像进行子类UITableViewCell
化或重新调整图像大小以完全适合,但这两者都感觉像是解决方法,并且(恕我直言)鉴于我已经拉小(非方形),这会使我的代码过于复杂图片。
建议子类化 UITableViewCell: 改变 UITableViewCell 的 imageView 的边界
建议调整所有图像的大小: UITableViewCell's imageView fit to 40x40
示例代码:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
static NSString *kCellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:kCellIdentifier];
if (!cell) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:kCellIdentifier];
}
NSString *mainText = @"mainText";
NSString *subtitle = @"subText";
[[cell textLabel] setText:mainText];
[[cell detailTextLabel] setText:subtitle];
// get album cover
UIImage *imageForCell = [album objectForKey:@"coverImage"];
// this is the broken part -
// it works upon first load, but it is NOT applied when a cell is re-used/dequeued..
// instead, the image is displayed un-scaled and un-square
[[cell imageView] setAutoresizingMask:UIViewAutoresizingFlexibleHeight|UIViewAutoresizingFlexibleWidth];
[[cell imageView] setContentMode:UIViewContentModeScaleAspectFill];
[[cell imageView] setClipsToBounds:YES];
if (imageForCell) {
[[cell imageView] setImage:imageForCell];
} else {
/* code to retrieve custom image */
}
return cell;
}
是什么赋予了?UITableViewCell 中是否有错误?或者这是出于某种设计原因?