lable 以及cell的高度自适应
2016-05-03 15:51
155 查看
1.先cell自适应
可以先拿到 这个lable里文字的高度
在cell的高度返回方法里面调用方法
在cell里填写此cell需要的高度
此时cell可以根据文字的高度 而适应高度了
那么cell里的lable的高度怎么设置??
正常在初始化里写正常的高度就可以
在cell里写一个改变这个detail的方法
出来再cell的赋值里面调用这个方法
lable的行间距设置
lable 根据宽度适应字体
可以先拿到 这个lable里文字的高度
//lable自适应的高度 -(CGFloat)heightWithString:(NSString *)aString { CGRect r = [aString boundingRectWithSize:CGSizeMake(self.tableView.frame.size.width - 28, 20000) options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName:FourT3GongNengZiHaoFont} context:nil]; return r.size.height; }
在cell的高度返回方法里面调用方法
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { return [ActiviteDetail2TwoCell cellHeight:[self heightWithString:_activityInfoNewModel.activityDes]]; }
在cell里填写此cell需要的高度
+(CGFloat)cellHeight:(CGFloat)height { return 72+height; }
此时cell可以根据文字的高度 而适应高度了
那么cell里的lable的高度怎么设置??
正常在初始化里写正常的高度就可以
self.detailLable.frame = CGRectMake(14, CGRectGetMaxY(self.titleLable.frame)+28+1, CurrentScreenWidth-28, 23);
在cell里写一个改变这个detail的方法
//赋值 and 自动换行,计算出cell的高度 -(void)setDetailLableText:(NSString *)text { //获得当前cell高度 CGRect frame = [self frame]; //文本赋值 self.detailLable.text = text; //设置label的最大行数 self.detailLable.numberOfLines = 10; CGSize size = CGSizeMake(CurrentScreenWidth-14-30-14, 1000); CGSize labelSize = [self.detailLable.text sizeWithFont:self.detailLable.font constrainedToSize:size lineBreakMode:NSLineBreakByClipping]; self.detailLable.frame = CGRectMake(self.detailLable.frame.origin.x, self.detailLable.frame.origin.y, labelSize.width, labelSize.height); //计算出自适应的高度 frame.size.height = labelSize.height; self.frame = frame; }
出来再cell的赋值里面调用这个方法
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { ActiviteDetail2TwoCell *cellTwo = [tableView dequeueReusableCellWithIdentifier:@"ActiviteDetail2TwoCell" forIndexPath:indexPath]; cellTwo.selectionStyle = UITableViewCellSelectionStyleNone; [cellTwo setDetailLableText:_activityInfoNewModel.activityDes]; }
lable的行间距设置
if (cellTwo.detailLable.text!=nil) { //这里要判断一下 改label不为空的时候 不判空 会蹦掉 NSMutableAttributedString * attributedString1 = [[NSMutableAttributedString alloc] initWithString:cellTwo.detailLable.text]; NSMutableParagraphStyle * paragraphStyle1 = [[NSMutableParagraphStyle alloc] init]; [paragraphStyle1 setLineSpacing:3]; [attributedString1 addAttribute:NSParagraphStyleAttributeName value:paragraphStyle1 range:NSMakeRange(0, [cellTwo.detailLable.text length])]; [cellTwo.detailLable setAttributedText:attributedString1]; [cellTwo.detailLable sizeToFit]; }
lable 根据宽度适应字体
titleLabel.adjustsFontSizeToFitWidth = YES;
相关文章推荐
- 猫都能学会的Unity3D Shader入门指南(一)
- 新版Azure CDN HTTPS加速服务正式上线
- 剑指Offer 面试题12:打印1到最大的N位数 题解
- [置顶] Android开发之 SwipeRefreshLayout
- 新版Azure CDN HTTPS加速服务正式上线
- 新版Azure CDN HTTPS加速服务正式上线
- 新版Azure CDN HTTPS加速服务正式上线
- Docker and OverlayFS in practice
- mysql储存过程多游标
- 设计模式——命令模式
- Python file.seek()文件游标移动操作方法
- echo 颜色设置
- 强烈推荐!帮你从零开始全面掌握UI设计的配色方法
- Java中利用Interpreter动态编译实现eval
- Java中路径问题
- [IMX6DL]Linux dmaengine 使用方法
- java常量池
- Android Studio 添加ndk右键工具
- 将二进制转换成16进制
- Java多线程中wait, notify and notifyAll的使用