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

     
     
     
     
     
  • 相关阅读:
    hdu 2019 数列有序!
    hdu 2023 求平均成绩
    HDU 5805 NanoApe Loves Sequence (思维题) BestCoder Round #86 1002
    51nod 1264 线段相交
    Gym 100801A Alex Origami Squares (求正方形边长)
    HDU 5512 Pagodas (gcd)
    HDU 5510 Bazinga (字符串匹配)
    UVALive 7269 Snake Carpet (构造)
    UVALive 7270 Osu! Master (阅读理解题)
    UVALive 7267 Mysterious Antiques in Sackler Museum (判断长方形)
  • 原文地址:https://www.cnblogs.com/jz319/p/3920369.html
Copyright © 2011-2022 走看看