通常需要imageView,textLabel,detailTextlabel,而UITableViewCell本身提供了方便的自动布局(当有图片和没图片时,textLabel和detailLabel的位置会左右自动调整). 但是图片的大小却是没有办法固定的(直接设置imageView.frame是无法固定imageView的大小的),那么一般来说解决这个问题的办法有两种:
固定显示图片的大小(包括PlaceHolder)
自定义tableViewCell,添加自定义的imageView,textLabel和detailTextLabel
这两种方式都可以解决这个问题,但是这两种方式其实都挺麻烦的,能否直接固定imageView的大小呢? 方法是有的,只需要重载layoutSubviews即可
#import"MyCell.h"
@implementation MyCell
-(void)layoutSubviews{
UIImage*img =self.imageView.image;
self.imageView.image= [UIImageimageNamed:@"017.png"];
[superlayoutSubviews];
self.imageView.image= img;
}
@end
我们只要使用MyCell就可以固定imageView的大小了,且大小为017.png的大小(一般来说这种页面都会使用一个017.png来显示默认图片).
原理是在UItableVeiw的layoutSubviews调用时,会根据imageView.image的大小来调整imageView,textLabel,detailTextLabel的位置,在此之前我们先将imageView.image设置为017.png图片,等待重新布局完后再将原本的图片设置回去就可以了