您的位置:首页 > 产品设计 > UI/UE

UI10_cell的自适应高度

2015-08-11 13:08 519 查看
高度的表示方式 : 2 种

tableView.rowHeight (固定值)

自适应 :

self.picArr = [NSArray arrayWithObjects:@”1.jpg”, @”2.jpg”, @”3.jpg”,nil];

self.ziArr = [NSMutableArray arrayWithObjects:@”中国共产党新闻网北京4月1日电 (万鹏)3月28日,习近平主席出席2015年博鳌论坛年会开幕式并发表了题为《迈向命运共同体 开创亚洲新未来》的主旨演讲,他强调,“亚洲是世界的亚洲。亚洲要迈向命运共同体、开创亚洲新未来,必须在世界前进的步伐中前进、在世界发展的潮流中发展。习主席的演讲传递了哪些重要信息?国务院参事室特邀研究员保育钧,中国国际问题研究院研究员杨希雨做客人民网时谈到,习主席主旨演讲展现出“五大亮点”,再次提出“亚洲方式”的新命题,开幕式本身可谓“一带一路”的各国大合唱,让人印象深刻”, @”床前明月光,疑是地上霜.举头望明月,低头思故乡”, @”NBA常规赛强强对话,勇士在一度落后17分的情况下,客场以110-106逆转快船,终结对手7连胜的同时豪取10连胜。库里全场轰下27分,并在第二节运球晃倒保罗,技惊四座。快船格里芬40分,外加12篮板5助攻”,nil];

将以上3张图片和3段话显示出来, 高度自适应

主要代码如下:

MainViewController. m 文件

#pragma mark 这个方法是tableview的delegate所提供的方法, 主要是用来设置每一行的高度
- (CGFloat)tableView:(UITableView *)tableView
heightForRowAtIndexPath:(NSIndexPath *)indexPath{
//  1.根据图片的尺寸, 设置行高

UIImage *image = [UIImage imageNamed:self.picArr[indexPath.row]];
//  通过CGSize找到image里面图片的尺寸
CGSize picSize = image.size;
//  计算行高
CGFloat rowHeight = picSize.height * self.view.frame.size.width / picSize.width;

//  2.计算label的高度

//  根据对应的文字求出cell上label显示的高度
NSDictionary *fontDic = [NSDictionary dictionaryWithObjectsAndKeys:
[UIFont systemFontOfSize:14], NSFontAttributeName, nil];

//根据文字的大小, 计算出文本尺寸
// 还需要执行一个尺寸(375, 0);
// 第三个参数: 计算高度需要依据字体的哪个特征来确定
CGRect rect = [self.ziArr[indexPath.row]boundingRectWithSize:CGSizeMake(375, 0)
fontDic context:nil];

//  最后把结果作为返回值返回
return  rowHeight + rect.size.height;

}


MyCell.m 文件

- (void)layoutSubviews{
[super layoutSubviews];
//  让imageview的尺寸自适应

// 因为这个方法是最后一个被执行的,所以执行到这个方法的时候,
已经对cell的个个属性进行完赋值的操作, 所以可以通过imageView找到图片和尺寸

CGSize picSize = self.ImageView.image.size;
CGFloat height = self.contentView.frame.size.width *picSize.height / picSize.width ;

self.ImageView.frame = CGRectMake(0, 0, self.contentView.frame.size.width, height);

// label尺寸自适应
NSDictionary *fontDic = [NSDictionary dictionaryWithObjectsAndKeys:
[UIFont systemFontOfSize:14], NSFontAttributeName, nil];

CGRect rect = [self.myLabel.text boundingRectWithSize:CGSizeMake(375, 0) options:
NSStringDrawingUsesLineFragmentOrigin attributes:fontDic context:nil];

self.myLabel.frame = CGRectMake(0, height,
self.contentView.frame.size.width, rect.size.height);

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: