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

     
     
     
     
     
  • 相关阅读:
    吴恩达机器学习笔记 —— 3 线性回归回顾
    springboot整合pagehelper实现分页
    Spring 线程池实战
    Java web后台插入数据库中文乱码问题解决
    Cesium项目实战(5)-城市各类POI数据制作、加工、展示
    Cesium项目实战(2)-城市行政区划信息展示以及专题信息展示
    【mybatis】mybatis中避免where空条件后面添加1=1垃圾条件的 优化方法
    Java之Json转List实体
    Maven项目META-INF文件夹不存在的问题
    Maven打jar包把配置文件放在META-INF目录下
  • 原文地址:https://www.cnblogs.com/jz319/p/3920369.html
Copyright © 2020-2023  润新知