iOS学习之根据文本内容动态计算文本框高度的步骤
2023-12-05 16:59:31
在视图加载的过程中,是先计算出frame,再根据frame加载视图的,所以在设计计算高度的方法的时候,设计成加号方法;
//首先给外界提供计算cell高度的方法
+ (CGFloat)heightForRowWithDic:(NSDictionary *)dic {
//cell高度 = nameLabel高度 + contentLabel高度 + 间距;
return [self heightForText:dic[@"content"]] + + kHeight_NameLabel;
} //动态计算文本高度
+ (CGFloat)heightForText:(NSString *)text {
//1.创建计算文本高度的参考量
//1.1 最大允许绘制的文本范围(尽量大点);
CGSize maxSize = CGSizeMake(kWidth_ContentLabel, );
//1.2 配置计算时的行截取方式,要和contentLabel对应
NSMutableParagraphStyle *style = [[NSMutableParagraphStyle alloc] init];
style.lineBreakMode = NSLineBreakByCharWrapping;
//1.3 配置计算时的字体大小
UIFont *font = [UIFont systemFontOfSize:];
//1.4 配置属性字典
NSDictionary *dic = @{NSFontAttributeName:font, NSParagraphStyleAttributeName:style};
//计算
//如果想保留多个枚举值,泽枚举值中间加按位或|即可,并不是所有的枚举值都可以按位或,枚举值的赋值中有左移运算符时才可以.
CGFloat height = [text boundingRectWithSize:maxSize options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading attributes:dic context:nil].size.height; return height; }
在计算文本高度的时候,要给contentLabel设置一些属性 - (UILabel *)contentLabel {
if (!_contentLabel) {
self.contentLabel = [[UILabel alloc] initWithFrame:CGRectMake(kMarginLeft_ContentLabel, kMarginTop_ContentLabel, kWidth_ContentLabel, kHeight_ContentLabel)]; //对contentLabel进行一些设置
_contentLabel.font = [UIFont systemFontOfSize:];
//设置Label可以多行显示,0表示没有限制行数
_contentLabel.numberOfLines = ;
//设置断行模式
_contentLabel.lineBreakMode = NSLineBreakByCharWrapping;//以单个字符进行截取.
}
return [[_contentLabel retain] autorelease];
}
最新文章
- MySQL5.6:基于GTID的主从复制
- MFC 获取图像的大小
- curl命令学习笔记
- CF 370B Berland Bingo
- 最好的文本框样式 最漂亮的文本框样式 textbox css样式
- php安装memcache注意事项
- Python 进阶(五)定制类
- Hibernate3.6中文手册
- URAL1204. Idempotents(扩展欧几里得)
- 在SharePoint 2010中创建网站的权限级别
- android 权限总结
- 每天进步一点点——Linux
- SICP 阅读笔记(二)
- Registry Workshop(注册表编辑器) V4.6.3 官方中文版
- 对于反射中的invoke()方法的理解
- EF 中 Code First 的数据迁移以及创建视图
- 为什么用CDN给你网站加速?
- 学习TensorFlow,多层卷积神经网络
- Django基础三(form和template)
- IIS6下使用多域名和通配符证书