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);
}