是什么?
思路:
- storyboard里面控件的设置
- 设置
ViewController
继承自UITableViewController
- storyboard中控件创建UITableViewController控件,且关联到
ViewController
- 创建自定义cell类继承自
UITableViewCell
. - storyboard中控件cell,关联自定义cell类
- 控件cell里创建子控件(头像,名称,vip,正文),设置位置,大小,约束.
- 设置
- plist文件里面获取数据
- 初始化cell + 设置cell的位置和大小(
storyboard
里设置好了) - 给cell设置数据.
- 设置cell的高度
- 告诉tableViewcell的高度是自动得
- 预估cell的高度
- 多个cell之间存在"循环引用",该怎么设置"配图"?
- 因cell的高度,在storyboard的里面固定了.
那么当不显示"配图"的情况下,cell的高度就显得太高了,不协调,该怎么办呢?
-
cell存在循环引用,所以有配图和无配图的情况,都需要写
如,只写有配图的情况下,给配图赋值.无配图情况下不写.则会产生..... if (statu.picture) {//有值时 self.pictureImg.image = [UIImage imageNamed:statu.picture]; } ....
- 开始某个cell,本身并没有配图.(如:示例中第一个cell)
-
当此cell移出屏幕,再次拉回屏幕时,就突然多了配图.
- 所以,有配图和无配图的情况都需要写.
.... //配图 if (statu.picture) {//有值时 self.pictureImg.hidden = NO; self.pictureImg.image = [UIImage imageNamed:statu.picture]; }else{//无值时 self.pictureImg.hidden = YES; }
- 以上代码中, "配图"虽然不会因为"cell的循环引用",而导致一会有"配图",一会无配图. 但是,没有"配图"的cell,并没因为"隐藏",而改变了cell的高度. 查看-原因
-
解决方法,"拖拽约束",对其进行设置.从而达到显示/隐藏配图
@interface StatusCell() @property (weak, nonatomic) IBOutlet NSLayoutConstraint *pictureHeight; // 配图高度的约束 @property (weak, nonatomic) IBOutlet NSLayoutConstraint *pictureBottom; // 配图距离底部的约束
//配图 if (statu.picture) {//有值时 self.pictureImg.hidden = NO; self.pictureImg.image = [UIImage imageNamed:statu.picture]; //通过给约束的常量赋值,修改pictureImg的宽和高. self.pictureHeight.constant = 100; self.pictureBottom.constant = 10; self.pictureImg.image = [UIImage imageNamed:statu.picture]; }else{//无值时 self.pictureImg.hidden = YES; //通过给约束的常量赋值,修改pictureImg的宽和高,进而连锁反应,达到修改了cell的高度 self.pictureHeight.constant = 0; self.pictureBottom.constant = 0; }
- 以上代码中, "配图"虽然不会因为"cell的循环引用",而导致一会有"配图",一会无配图. 但是,没有"配图"的cell,并没因为"隐藏",而改变了cell的高度. 查看-原因
- 因"配图"有时有,有时又没有. 所以cell的高度既等于40,又等于100.这样设置出来的约束,编译器会报⚠️.
解决方法
网友评论