编辑:
我通过创建自定义单元格解决了这个问题。(但是,还有其他问题。)但是为什么默认单元格不起作用仍然是一个谜......
Cory 的回答并没有解决问题,但clipsToBounds
确实很重要,我感谢他的持续帮助。所以我给了他赏金,但不接受他的答案作为答案。答案还在风中......
=================================
我将UIViewContentModeScale
单元格图像的模式设置为AspectFill
(左图)并且图像正确显示(填充图像视图但保持纵横比)。但是,触摸并按住单元格后,图像会发生变化:imageView 的 frame 和 contentViewMode 会发生变化。(见下左图的第一个单元格)
这确实是有线的,我可以相信诸如基本的事情可能会出错,所以一定有一些我错过了的东西。
环境:Xcode 4.3 iOS5.1 模拟器和设备。
更新:
我使用情节提要的检查器设置 UIViewContentMode 。
顺便说一句,我使用了 SDWebImage/UIImageView+WebCache.h。
更新2:
我在代码中明确设置了内容模式,但问题仍然存在。[cell.imageView setContentMode:UIViewContentModeScaleAspectFill];
更新4:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"AlbumCell"];
if(cell == nil){
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"AlbumCell"];
}
//[cell.imageView setContentMode:UIViewContentModeScaleAspectFill];
//[cell.imageView setClipsToBounds:YES];
[self configureCell:cell atIndexPath:indexPath];
return cell;
}
- (void)configureCell:(UITableViewCell *)cell atIndexPath:(NSIndexPath *)indexPath
{
Album *album = [self.fetchedResultsController objectAtIndexPath:indexPath];
cell.textLabel.text = [album.title description];
cell.detailTextLabel.text = [self.userVisiableDateFormatter stringFromDate:album.releaseDate];
//[cell.imageView setContentMode:UIViewContentModeScaleAspectFill];
[cell.imageView setImageWithURL:[NSURL URLWithString:album.coverThumbnailUrl]
placeholderImage:[self placeHolderImage]];
}