如何调整cell的大小
2个回答
展开全部
在做tableView的时候,我们有时候需要根据cell的高度动态来调整,最近在网上看到一段代码不错,跟大家Share一下。
在
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
类中获取cell的高度:
CGSize boundSize = CGSizeMake(216, CGFLOAT_MAX);
cell.textLabel.text = @"12345678900123456789";
cell.userInteractionEnabled = NO;
cell.textLabel.numberOfLines = 0;
CGSize requiredSize = [cell.textLabel.text sizeWithFont:[UIFont systemFontOfSize:13] constrainedToSize:boundSize lineBreakMode:UILineBreakModeWordWrap];
CGRect rect = cell.frame;
rect.size.height = requiredSize.height+5;
cell.frame = rect;
这时候获取到了cell的高度,然后在
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
类中改变cell的高度:
UITableViewCell *cell = [self tableView:tableView cellForRowAtIndexPath:indexPath];
NSLog(@"cell height %f",cell.frame.size.height);
return cell.frame.size.height;
这样以来cell的高度就根据cell里label的内容自动改变啦。
其主要出发点就是我有一个label,然后我要把这个label展示出来,我根据字体的大小还有行数来获取一个高度,这样cell的高度就有啦。
在
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
类中获取cell的高度:
CGSize boundSize = CGSizeMake(216, CGFLOAT_MAX);
cell.textLabel.text = @"12345678900123456789";
cell.userInteractionEnabled = NO;
cell.textLabel.numberOfLines = 0;
CGSize requiredSize = [cell.textLabel.text sizeWithFont:[UIFont systemFontOfSize:13] constrainedToSize:boundSize lineBreakMode:UILineBreakModeWordWrap];
CGRect rect = cell.frame;
rect.size.height = requiredSize.height+5;
cell.frame = rect;
这时候获取到了cell的高度,然后在
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
类中改变cell的高度:
UITableViewCell *cell = [self tableView:tableView cellForRowAtIndexPath:indexPath];
NSLog(@"cell height %f",cell.frame.size.height);
return cell.frame.size.height;
这样以来cell的高度就根据cell里label的内容自动改变啦。
其主要出发点就是我有一个label,然后我要把这个label展示出来,我根据字体的大小还有行数来获取一个高度,这样cell的高度就有啦。
2017-11-06
温州瓯越培训学校
温州市瓯越职业培训学校是一家经温州市民政局批准成立的专门从事培训教育的正规机构,学校自1992年开创教育培训以来不断发展壮大,现开设电脑培训、会计培训、英语培训、手机维修培训等多个培训体系.
向TA提问
关注
展开全部
一般情况下,我们使用tableview的时候从来没有设置过cell的大小(w,h)、位置(x,y)等,而是系统直接给我们自动生成,但是有的时候我们可能会改动cell的大小及位置,比如:在适配ios6跟ios8的时候,需要把外观做的一样,但是ios6中cell中的contextview默认情况下是不占满整个cell的,而是左右同时空出10个间距,所以这个时候我们需要在哪里进行操作呢。这个时候我们就用到了-(void)setFrame:(CGRect )frame;这个方法。
在此方法中截获frame,这个tabelview传递过来的frame,我们在其基础上进行一些操作来改变cell的位置和大小,然后再将我们生成的这个frame传给父类方法,让他进行具体的操作
在此方法中截获frame,这个tabelview传递过来的frame,我们在其基础上进行一些操作来改变cell的位置和大小,然后再将我们生成的这个frame传给父类方法,让他进行具体的操作
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询