iOS下 UILabel 如何自动换行
- UILabel的自动换行,自动换行的同时要自适应Frame大小。
- UITableView的行高自适应内容,实时调整高度。
- UILabel的自动换行
- 获取UILabel的frame大小
- 获取UILabel的字体大小
- 获取UILabel的文本内容
- 根据上面的3部分数据,计算文本显示区域大小
- 根据4计算的大小,实时改变UILabel的frame
NSString * labelStr = @“你好,这是UILabel的自动换行测试内容,主要实现多行数据的自动换行,自适应不同行数的数据”;
CGSize labelSize = {0, 0};
labelSize = [labelStr sizeWithFont:[UIFont systemFontOfSize:14]
constrainedToSize:CGSizeMake(200.0, 5000)
lineBreakMode:UILineBreakModeWordWrap];
//14 为UILabel的字体大小
//200为UILabel的宽度,5000是预设的一个高度,表示在这个范围内
label.numberOfLines = 0;//表示label可以多行显示
label.lineBreakMode = UILineBreakModeCharacterWrap;//换行模式,与上面的计算保持一致。
label.frame = CGRectMake(label.frame.origin.x, label.frame.origin.y, label.frame.size.width, labelSize.height);//保持原来Label的位置和宽度,只是改变高度。
- UITableView的行高自适应内容
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
NSString * labelStr = @“你好,这是UILabel的自动换行测试内容,主要实现多行数据的自动换行,自适应不同行数的数据”;
CGSize labelSize = {0, 0};
labelSize = [labelStr sizeWithFont:[UIFont systemFontOfSize:14]
constrainedToSize:CGSizeMake(200.0, 5000)
lineBreakMode:UILineBreakModeWordWrap];
//14 为UILabel的字体大小
//200为UILabel的宽度,5000是预设的一个高度,表示在这个范围内
return labelSize.height + delta;
//delta 是Cell除了自适应控件UILabel外的其它控件所占的高度。
}
小结:实现上面2个技术点后,评论相关的APP或者类似的APP都可以做到自适应内容,根据内容多少自动换行,自动调整控件的位置和大小,达到最优的显示效果。
最新文章
- ASP.NET Identity 2新增双重认证、帐号锁定、防伪印章功能并修复了一些bug
- 手机端布局rem 与vm的使用
- iOS--归档和解档(Archiver)、(UnArchiver)
- jQuery图片渐变特效的简单实现
- SSH+Oracle10G抛Disabling contextual LOB creation as createClob() m
- Trie树|字典树(字符串排序)
- 2.2Bind建立配置文件和实体的映射「深入浅出ASP.NET Core系列」
- c#枚举描述
- VS2017 + QT5 + C++开发环境搭建和计算器Demo测试
- Apache Commons Digester 三(规则注解)
- LeetCode(48):旋转图像
- os.walk() 目录生成器
- 20181017 PL/SQL 记录
- 2017中国人工智能公司榜单发布,颠覆AT的AI独角兽全在这
- Codeforces 338 D. GCD Table
- 〖Linux〗bash和expect执行ssh命令行sshcmd.exp
- [转发] win8安装mindget mindmanger
- 2-Tenth Scrum Meeting20151210
- STL - 容器 - 运行期指定排序准则
- 【Linux学习笔记】Linux C中内联汇编的语法格式及使用方法(Inline Assembly in Linux C)