一、计算Cell子控件的frame

1.来,看一下,刚才我们已经做到把这个模型设置给自定义的cell了吧,
那么,在这个自定义Cell里面呢,我们是不是要开始设置数据了,
设置数据,我们,设置数据,其实很简单,就是把我们这里边的每一个控件,对应的值,从模型里面取出来,给了它,是不是就OK了,

2.第一个,我们设置的是这个头像,

头像,我们找到self.imgView……,里面有一个叫做什么,Icon吧,

self.imgViewIcon,这是头像吧,
“点”image,
self.imgViewIcon.image

self.imgViewIcon.image = [UIImage imageNamed:

这个地方,是不是要拿到模型,
3.我们这里模型,可以怎么拿,可以self.weibos,
来,我们把这个取出来吧,把这个取出来,注意看,
CZWeibo,

CZWeibo *model = self.weibo;

这样的话, 这个是不是就是那个模型,

这里就等于我们这个模型"点"icon,

为什么这里“点”不出来呢,因为我们这里,缺一个啥,

是不是缺一个头文件啊,

它是不是变色了,

这样的话,设置头像,
1)头像数据,设置好了,
就这么一句话,
2)OK,接下来,设置昵称,
self.lblNickName.text = model.name;

这是设置昵称,
3)设置会员,
注意,这个会员,有点儿不一样,
只要你是会员,头像是不是都是这个头像啊,
会员图标,是不是都是这个黄色,皇冠的这个图标,
会员图标,都是一样的,所以说,

不会说,你,比如说,头像,第一个人,头像是这个,第二个人,头像是这个,第三个人,头像是另外一个,每个人头像,是不是都可能不一样啊,
但是,会员图标,所有的人,只要是会员,图标是一样的,明白,
所以说,设置会员头像,这个数据,没有必要写在这里,

为什么呢,注意听,如果说,你把设置会员那个图标,那句话,写在这个setting方法里面,这个setting方法,在哪里调,
是不是在这个设置微博属性

是不是在这个设置微博属性这个方法里面调,
这个设置微博属性,set方法,这儿在哪儿调,
是不是这了去调用,

在这里调用话,每次调一次,就会重新设置一次这个会员的图标,
但是,会员图标,有必要每次都重新设置吗,

设置一次,是不是就够了,
反正都是一样的,
所以说,这句话,

这句话,没有必要,设置会员图标,没有必要放在这儿,
而是,可以放哪儿,,
在创建会员

在创建会员头像的时候,在创建的时候,直接在这里,

imgViewVip.image = [UIImage imageNamed:@“vip”];
这儿直接写死,vip,

就这么,在这里,写一次,就可以了,
创建控件的时候,直接设置一次头像是vip,
接下来,在设置数据这个地方,

你只要根据它是不是vip,判断是否应该显示这个图标,就OK了,
明白,这里不需要就是动态每次都设置它的图片,
不需要,设置一次就够了,
如果,

如果,model.isVip

如果它是会员,我就让
self.imgViewVip.hidden = NO;
如果是会员,就不隐藏,是不是就显示啊,

else {
//如果它不是会员呢,
//如果它不是会员,是不是就让它隐藏吧,
self.imgViewVip.hidden = YES;
}
就让它隐藏,

这就是设置会员头像是否显示,
注意,这个地方一定要这样写,一定要if——else,两个都写上,
因为,我们这里向上滚动的时候,

向上滚动的时候,这个Cell,等会儿要重用这个Cell啊,
Cell重用的时候,假如说,把第一个单元格,把第一行滚出去了,
然后呢,最后一行要滚进来一个,第一行,滚出去的是一个会员,滚进来的是一个不是会员,那么你这个不是会员的这个人,如果用了这个是会员的这个Cell,重用了这个Cell,这个时候,这个Cell,默认是皇冠,
就会把那个不是会员的皇冠,这儿默认也显示出来了,
所以说,对于每一条数据,在这里都要判断一下,

如果是会员,就显示,如果不是会员,就隐藏啊,
所以说,每一个单元格,设置的时候,都要重新判断一下,不然的话,在单元格重用的时候,就会造成你用了别人的单元格,别人那个图片,显示到你这儿来了,
4)正文,怎么设置,
self.lblText.text = model.text;

5)配图
配图,我们这里,也得判断一下,
如果说,这个人,比如说,你看,

如果说,这个人,有配图,
是不是就设置一下,配图,
同时让配图显示出来,
如果这个人就没有配图,
还有必要去设置一下吗,
同时是不是还得把这个配图隐藏啊,
对吧,所以这儿也要做一下判断,
也是得根据,有配图,还是没配图,
要做一个判断,
有人说,这个头像,为什么不做判断,有头像、没头像,
废话,头像都有吧……
昵称为什么不做判断,有昵称、没昵称,
昵称是不是也都有,
这些都有,
昵称颜色,那时候咱们再看,
好,配图,怎么判断,
if (model.picture){
//如果,当前这个模型,“点”picture,如果要是没有配图,是不是就是nil啊,如果要是nil,就表示没有配图,如果不是nil,就是YES,就表示有配图吧,

//如果有配图
//如果没有配图,就是nil,nil的话,就不执行if语句了,
//如果有配图,就不是nil,不是nil的话,才执行if语句,
//如果有配图,让self.imgViewPicture.image = [UIImage imageNamed:model.picture],是不是这么来设置一下,
self.imgViewPicture.image = [UIImage imageNamed:model.picture];
//注意啊,如果说,这个picture属性,是一个nil,
//如果是nil的话,直接写这句话,你把nil传进来,这句话是不是报错的,

//你读取一个空的一个图片的名称,这句话是不是会报异常,
//所以说,为了这个异常,你这儿也得判断一下啊,
//如果model.picture的值是nil,那么下面这句话执行会报异常

//所以这儿,我们得判断一下,
//同时,是不是还要把那个图片显示出来,
//显示图片框,
self.imgViewPicture.hidden = NO;

//self.imgViewPicture.hidden = NO,这个图片框,是不是显示出来了,
} else {
//else,如果要是没有配图,没有配图,注意听,
//既然就没有配图,你还需要设置什么东西吗,
//不需要,但是如果没有配图,这个图片框还能显示出来吗,
//是不是隐藏掉吧,
//隐藏图片框
self.imgViewPicture.hidden = YES;
}

有人说,你都没配图,你隐藏它干啥了,没配图,不隐藏它,也行吗,
如果说,你就是一个新创建的一个Cell,刚刚创建那个Cell,
你没有配图,图片框是不是没有东西,
是不是什么都显示不出来,
也没事儿,
还是,如果说,你要重用上一个单元格的Cell,
这个时候,上一个单元格,它是有配图的,
你重用了上一个单元格,如果你这里没有配图,你如果要不让它隐藏的话,上一个单元格里面,图片框里面,是不是原来有图片,你如果不隐藏,是不是直接给你显示出来了,
这就是当我们进行单元格重用的时候,一定要注意,把原来单元格的那些可能会影响你的数据,是不是都给它设置一下啊,
明白吧,重用别人的东西,一定要干干净净、干干净净,
好,所以说,这里,如果要是没有配图,那么就隐藏图片框,
//如果没有配图,隐藏图片框,
self.imgViewPicture.hidden = YES;
好,这样的话,把我们的数据设置好了,
现在,我们在这个settingData

现在,在我们这个settingData方法里面,
在这个settingData方法里面,把我们所有的这些控件,数据设置好了,

设置好数据以后,接下来,在settingFrame里面,我们是不是一个一个要设置它们的什么,设置一个frame,坐标吧,

四、来,我们设置一下这个坐标,
1.设置这个坐标,相对来说,就比较烦人了,

iOS开发:计算UITableViewCell中子视图的frame

在iOS开发中,设置UITableViewCell时,通常需要计算并设置子视图的frame。文章详细讲解了如何根据模型数据动态设置头像、昵称、会员图标、正文和配图的frame,包括计算文字的大小、处理配图的显示和隐藏,以及处理单元格重用时的数据更新。此外,还介绍了如何根据文字内容动态计算UILabel的高度,并封装了一个计算文字大小的方法。
最低0.47元/天 解锁文章
828

被折叠的 条评论
为什么被折叠?



