如何让 UITableViewCell 中的 imageView 大小固定

Posted jgCho

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何让 UITableViewCell 中的 imageView 大小固定相关的知识,希望对你有一定的参考价值。

UITableView可以算是使用频率最高的组件之一的,在开发过程中经常需要展示一些简单的信息列表
技术分享常见列表布局

如图,很多页面其实就是这种展示结果,通常需要imageView,textLabel,detailTextlabel,而UITableViewCell本身提供了方便的自动布局(当有图片和没图片时,textLabel和detailLabel的位置会左右自动调整). 但是图片的大小却是没有办法固定的(直接设置imageView.frame是无法固定imageView的大小的),那么一般来说解决这个问题的办法有两种:

  • 固定显示图片的大小(包括PlaceHolder)
  • 自定义tableViewCell,添加自定义的imageView,textLabeldetailTextLabel

这两种方式都可以解决这个问题,但是这两种方式其实都挺麻烦的,能否直接固定imageView的大小呢? 方法是有的,只需要重载layoutSubviews即可

派生UITableViewCell

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

//自定义一个Cell
@interface MMCell : UITableViewCell

@end


@implementation MMCell

//重载layoutSubviews
- (void)layoutSubviews
{
UIImage *img = self.imageView.image;
self.imageView.image = [UIImage imageName:@"res/PlaceHolder.png"];
[super layoutSubviews];
self.imageView.image = img;
}

@end

这样,我们只要使用MMCell就可以固定imageView的大小了,且大小为PlaceHolder.png的大小(一般来说这种页面都会使用一个PlaceHolder.png来显示默认图片).

原理是在UItableVeiwlayoutSubviews调用时,会根据imageView.image的大小来调整imageView,textLabel,detailTextLabel的位置,在此之前我们先将imageView.image设置为PlaceHolder.png图片,等待重新布局完后再将原本的图片设置回去就可以了

以上是关于如何让 UITableViewCell 中的 imageView 大小固定的主要内容,如果未能解决你的问题,请参考以下文章

如何在自定义 UITableViewCell 中增加 Label 的高度

如何在 swift 中使自定义 UITableViewCell 中的链接可点击

调整 UILabel 的大小以适应自定义 UITableViewCell 中的文本,无论宽度如何

如何让我的 UITableViewCell 包含两个标签?

如何让 UITableView 行高自动调整为 UITableViewCell 的大小?

如何让 UIImageView 填充 UITableViewCell?