背景:

相信很多朋友都遇到过,文本的内容长度不一,需要根据内容的多少来自动换行处理。
场景:
很多APP中评论,有的评论长,有的评论短,有的一行,有的多行。
 
下面以评论的实现为例来说说具体如何实现。
 
技术点:
  1. UILabel的自动换行,自动换行的同时要自适应Frame大小。
  2. UITableView的行高自适应内容,实时调整高度。
实现方法:
  • UILabel的自动换行
  1. 获取UILabel的frame大小
  2. 获取UILabel的字体大小
  3. 获取UILabel的文本内容
  4. 根据上面的3部分数据,计算文本显示区域大小
  5. 根据4计算的大小,实时改变UILabel的frame
code如下:

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的行高自适应内容
这个和上面的类似,直接上Code:

- (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都可以做到自适应内容,根据内容多少自动换行,自动调整控件的位置和大小,达到最优的显示效果。

iOS下 UILabel 如何自动换行的更多相关文章

  1. iOS之UILabel的自动换行

    思路: 获取UILabel的frame大小 获取UILabel的字体大小 获取UILabel的文本内容 根据上面的3部分数据,计算文本显示区域大小 根据4计算的大小,实时改变UILabel的frame ...

  2. iOS关于UILabel 基本属性 背景图片 背景色

    [代码] iOS关于UILabel 基本属性 背景图片 背景色 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 ...

  3. IOS下拉放大图片

    代码地址如下:http://www.demodashi.com/demo/11623.html 一.实现效果图 现在越来越多的APP中存在下拉放大图片的效果,今天贡献一下我的实现这种方法的原理,和我遇 ...

  4. IOS 为UILabel添加长按复制功能

    IOS 为UILabel添加长按复制功能 在iOS中下面三个控件,自身就有复制-粘贴的功能: 1.UITextView 2.UITextField 3.UIWebView UIKit framewor ...

  5. 如何在webapp中做出原生的ios下拉菜单效果

    github:https://github.com/zhoushengmufc/iosselect webapp模仿ios下拉菜单 html下拉菜单select在安卓和IOS下表现不一样,iossel ...

  6. 记一次事件委托在 ios 下的兼容 bug

    项目中碰到的兼容类 bug,记录一二. 页面上有几个同类型的控件,点击它们会触发一些事件,很显然,事件委托优于批量绑定.为了图方便,我将 click 事件绑定到了 document.body 上(绑定 ...

  7. ios下fixed回复框bug的解决方案

    前几天做一个移动端的页面,要加个像微信那样附着在底部的回复框,按照做PC端网页的思路,首先是用fixed,在安卓上测了一下是好的,结果到朋友的iphone6p上就不行了,点击输入框之后它总会跳到屏幕中 ...

  8. Cordova webapp实战开发:(6)如何写一个iOS下获取APP版本号的插件?

    上一篇我们学习了如何写一个Andorid下自动更新的插件,我想还有一部分看本系列blog的开发人员希望学习在iOS下如何做插件的吧,那么今天你就可以来看看这篇文字了. 本次练习你能学到的 学习如何获取 ...

  9. opencv直线检测在c#、Android和ios下的实现方法

    opencv直线检测在c#.Android和ios下的实现方法 本文为作者原创,未经允许,不得转载 :原文由作者发表在博客园:http://www.cnblogs.com/panxiaochun/p/ ...

随机推荐

  1. Flask开发遇到的问题:BuildError: Could not build url for endpoint 'main.followers' with values ['username']. Did you mean 'main.user' instead?

    @(Flask Web Development 12th chapter) 描述 Flask开发中遇到BuildError: Could not build url for endpoint 'mai ...

  2. 文件及文件夹操作- File类、Directory 类、FileInfo 类、DirectoryInfo 类

    文件及文件夹操作: C/S:WinForm可以操作客户端文件 Client ServerB/S:Brower Server 命名空间:using system .IO; 1. File类: 创建:Fi ...

  3. win10蓝屏,windbg的使用

    win10蓝屏,windbg的使用 上微软官网下载windbg https://docs.microsoft.com/en-us/windows-hardware/drivers/debugger/d ...

  4. 高性能mysql的事物隔离级别

    数据库事务的隔离级别有4种,由低到高分别为Read uncommitted .Read committed .Repeatable read .Serializable .而且,在事务的并发操作中可能 ...

  5. Incjector

    网上的注入工具很多,大多也有比较详细的解释,但是大部分windows下的注入软件都是对自己软件的一种推荐,而且很多也不是非常的安全,对于有些破解版本来说,很可能自身会被带有木马,所以,Linux下的注 ...

  6. 交换排序-C#实现

    交换排序包括:冒泡排序和快速排序 具体代码如下: 冒泡排序: /// <summary> /// 冒泡排序 /// 稳定性:稳定 /// 时间复杂度:O(n2) /// </summ ...

  7. DevExpress 控件汉化代码和使用方法

    DevExpress 第三方控件汉化的全部代码和使用方法   DevExpress.XtraEditors.Controls  此控件包中包含的控件最多,包括文本框,下拉列表,按钮,等等        ...

  8. iproute

    iproute之tc命令翻译地址,man tc的翻译 http://blog.csdn.net/ysdaniel/article/details/7905879

  9. saltstack实战1-salt-syndic

    Syndic建立在中心Master和Minions之间, 并允许多层分级Syndic, 使Salt拓扑可以变得更为灵活. 那么Syndic是如何工作的? 当前有哪些优势和局限哪? Syndic的优势和 ...

  10. 左耳听风-ARTS-第1周

    Algorithm https://leetcode.com/problems/longest-common-prefix/ class Solution { public String longes ...