cell自适应高度的设置方法

2015-10-28  本文已影响386人  lion_xion

myTableView.rowHeight = 100 , 这个方法可以设置行高,它只能执行一次,所以不灵活


**************************************

这个方法是tableView的得了gate所提供的协议方法,主要是用来设置每一行高度的

- (CGFloat)tableView:(UITableView*)tableView heightForRowAtIndexPath:(NSIndexPath*)indexPath{

//根据图片的尺寸设置行高

UIImage*image = [UIImageimageNamed:self.picArr[indexPath.row]];

//通过cgsize找到image里面图片的尺寸

CGSizepicSize = image.size;

//计算行高

CGFloatrowHeight = picSize.height*self.view.frame.size.width/ picSize.width;

//计算label的高度

//根据对应的文字求出cell上label显示的高度

NSDictionary*fontDic = [NSDictionarydictionaryWithObjectsAndKeys:[UIFontsystemFontOfSize:14],NSFontAttributeName,nil];

//根据文字的大小,计算出文本的尺寸

//还需要指定一个尺寸(375,0);

CGRectrect  = [self.ziArr[indexPath.row]boundingRectWithSize:CGSizeMake(376,0)options:NSStringDrawingUsesLineFragmentOriginattributes:fontDiccontext:nil];

//最后把结果作为返回值

returnrowHeight + rect.size.height;

}


*********************************************

- (void)creatView{

self.myImageView= [[UIImageViewalloc]init];

self.myImageView.backgroundColor= [UIColorcyanColor];

[self.contentViewaddSubview:self.myImageView];

[_myImageViewrelease];

self.myLabel= [[UILabelalloc]init];

//指定label的字体大小,默认是17号

self.myLabel.font= [UIFontsystemFontOfSize:14];

// 0是最大行数

self.myLabel.numberOfLines=0;

[self.myLabelsizeToFit];

[self.contentViewaddSubview:self.myLabel];

[self.myLabelrelease];

}

- (void)layoutSubviews{

[superlayoutSubviews];

//让imageview的尺寸和cell的图片大小相同

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

CGSizepicSize =self.myImageView.image.size;

CGFloatheight =self.contentView.frame.size.width* picSize.height/ picSize.width;

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

//计算label的高度

//根据对应的文字求出cell上label显示的高度

NSDictionary*fontDic = [NSDictionarydictionaryWithObjectsAndKeys:[UIFontsystemFontOfSize:14],NSFontAttributeName,nil];

//根据文字的大小,计算出文本的尺寸

//还需要指定一个尺寸(375,0);

CGRectrect  = [self.myLabel.textboundingRectWithSize:CGSizeMake(376,0)options:NSStringDrawingUsesLineFragmentOriginattributes:fontDiccontext:nil];

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

}

上一篇下一篇

猜你喜欢

热点阅读