IOS下 UILabel 如何自动换行

转自:http://zasoft.blog.163.com/blog/static/205215176201301414915700/

背景:

相信很多朋友都遇到过,文本的内容长度不一,需要根据内容的多少来自动换行处理。

场景:

很多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=[labelStrsizeWithFont:[UIFontsystemFontOfSize: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=[labelStrsizeWithFont:[UIFontsystemFontOfSize:14]

constrainedToSize:CGSizeMake(200.0,5000)

lineBreakMode:UILineBreakModeWordWrap];

//14 为UILabel的字体大小

//200为UILabel的宽度,5000是预设的一个高度,表示在这个范围内

returnlabelSize.height + delta;

//delta 是Cell除了自适应控件UILabel外的其它控件所占的高度。

}

?

?

小结:实现上面2个技术点后,评论相关的APP或者类似的APP都可以做到自适应内容,根据内容多少自动换行,自动调整控件的位置和大小,达到最优的显示效果。

?

?

?

?

?

IOS下 UILabel 如何自动换行,布布扣,bubuko.com

时间: 2024-10-21 13:47:23

IOS下 UILabel 如何自动换行的相关文章

XIB下UILabel的自动换行

样式: XIB的设置: text为plain不影响;attributed适用于IOS7:lines=0代表多行:Word Wrap代表自动换行: (非动态换行!!!!!!) XIB下UILabel的自动换行

iOS下的手势密码实现

一.iOS下的手势 1 #import "ViewController.h" 2 3 @interface ViewController () 4 5 @property (weak, nonatomic) IBOutlet UILabel *genstureLabel; 6 7 8 @end 9 10 @implementation ViewController 11 12 - (void)viewDidLoad { 13 [super viewDidLoad]; 14 15 16

UILabel autolayout自动换行 版本区别

今天解决了一个与UILabel相关的Bug. 表现为在iOS7以上的系统中,UILabel能够自动换行,多行显示的字符串,而在iOS6上面则不会自动换行,直接打省略号. 正常情况下,numberOfLines设置为0,UILabel就会自动换行了. 但是在iOS6下面需要设置preferredMaxLayoutWidth,autolayout才会判断到折行的位置,才能正确的显示多行的UILabel 但是preferredMaxLayoutWidth设置为多少才是正确的呢? 如果你知道一个确切的w

IOS 为UILabel添加长按复制功能

IOS 为UILabel添加长按复制功能 在iOS中下面三个控件,自身就有复制-粘贴的功能: 1.UITextView 2.UITextField 3.UIWebView UIKit framework提供了几个类和协议方便我们在自己的应用程序中实现剪贴板的功能. 1.UIPasteboard:我们可以向其中写入数据,也可以读取数据 2.UIMenuController:显示一个快捷菜单,用来展示复制.剪贴.粘贴等选择的项. 3.UIResponder中的 canPerformAction:wi

解决ios下的微信打开的页面背景音乐无法自动播放

后面的项目发现,还有两个坑,需要注意下: ·本文的解决方案的核心是利用了 微信/易信 在ready的时候会有个 WeixinJSBridgeReady/YixinJSBridgeReady事件,通过监听这个事件来触发的.那有个坑就是 如果微信已经ready了,但还没执行到你监听这个ready事件的代码,那么你的监听是没用的,所以最理想的情况是,监听的js放在head前面(放在css外链之前),确保最新执行,切记!切记!. ·另一个坑就是,本文的解决方案只适合一开始就播放的背景音乐.如果你是做那种

iOS 下的相册与图片处理

iOS 下的相册与图片处理 需求 很多公司项目中都会使用到相册,以及相机,保存图片,从相册中选取图片等等操作.本文将详细介绍该功能如何实现优化,以及使用一些优秀的第三方库来辅助完成我们的需求. photos framework 的使用 Photos Framework reference Classes PHAdjustmentData /* When a user edits an asset, Photos saves a PHAdjustmentData object along with

iOS下bound,center和frame

---恢复内容开始--- 本文转发至:http://www.xuebuyuan.com/1846606.html 在写程序的时候发现,iOS下的坐标.位置很容易弄乱,特别是在不同的坐标系统中,必须完成弄明白一些概念才能做相应的变化,例如CoreImage和UIView的坐标系统就截然不同,一个是以屏幕的左上角为原点,一个是以屏幕的左下角为原点.总体上,IOS中包含UIKit坐标系(X轴正方向向右,Y轴正方向向下)和标准的Quartz 2D绘图坐标系(X轴正方向向右,Y轴正方向向上),下面,解释一

iOS下的Http库AFNetworking

在iOS下开发一直是用ASIHTTPRequest库,ASIHTTPRequest已经停止更新,看了这个文章http://www.oschina.net/news/61416/github-top-100-objective-c-projects (原文https://github.com/Aufree/trip-to-iOS/blob/master/Top-100.md)的AFNetworking库,感觉还不错. AFNetworking库的地址是 https://github.com/AFN

记录遇到的ios下的bugs

开个帖子不定期更新,记录遇到的ios下的bugs,其中有些已经解了,有些还是无解 1 UIWebView内存泄漏 这个到ios7下还无解,ios8未看 2 UIFont copy 在ios6下crash 这个想不明白为啥,也许是以前的coder用了什么黑魔法 3 UITextView 和 UITextField 的键盘出现的消息的顺序不一样的问题 // UIKeyboardDidShowNotification ---> UITextViewTextDidBeginEditingNotifica