美文网首页
iOS 01、UILabel的(size)高度自适应

iOS 01、UILabel的(size)高度自适应

作者: echo海猫 | 来源:发表于2017-06-23 09:44 被阅读205次

    第一种思路:
    采用label的属性设置完成要求

    1.创建label并设置初始化frame
    2.设置行号numberOfLines,默认为1,0为不限制行数,可根据情况进行设定,这里我们设置自适应把其暂且设置为0
    3.设置显示单位lineBreakMode为:NSLineBreakByWordWrapping(枚举值)
    // NSParagraphStyle
    typedef NS_ENUM(NSInteger, NSLineBreakMode) {
    NSLineBreakByWordWrapping = 0,    // 以空格为界,保留整个字词
    NSLineBreakByCharWrapping,  //保留整个字符
    NSLineBreakByClipping,  // Simply clip 简单剪裁,到边界为止
    NSLineBreakByTruncatingHead,    // Truncate at head of line: "...wxyz"显示尾部文字内容
    NSLineBreakByTruncatingTail,    // Truncate at tail of line: "abcd..."显示头部文字内容
    NSLineBreakByTruncatingMiddle   // Truncate middle of line:  "ab...yz"显示头尾文字内容
    } NS_ENUM_AVAILABLE(10_0, 6_0);
    4.添加文本内容(文字大小font 也可根据UIFont自定义设置)
    5.用sizeThatFits重新获取label的size大小
    实现代码(个别顺序可按自己代码风格自行改变):
    UILabel *label = [[UILabel alloc]initWithFrame:CGRectMake(20, 250, 300, 0)];
    label.numberOfLines = 0;//相当于不限制行数
    label.lineBreakMode = NSLineBreakByWordWrapping;//以单词为显示单位显示,后面部分省略不显示
    //    label.font=[UIFont systemFontOfSize:20];  //设置文字大小
    label.text= @"君不见,黄河之水天上来⑵,奔流到海不复回。君不见,高堂明镜悲白发,朝如青丝暮成雪⑶。人生得意须尽欢⑷,莫使金樽空对月。天生我材必有用,千金散尽还复来。烹羊宰牛且为乐,会须一饮三百杯⑸。岑夫子,丹丘生⑹,将进酒,杯莫停⑺。与君歌一曲⑻,请君为我倾耳听。";
    label.textAlignment = NSTextAlignmentLeft;  //文本对齐方式
    CGSize size = [label sizeThatFits:CGSizeMake(label.frame.size.width, MAXFLOAT)];
    label.frame =CGRectMake(20, 250, 300, size.height);
    [self.view addSubview:label];
    

    第二种思路:

    NSString *text = @"君不见,黄河之水天上来⑵,奔流到海不复回。君不见,高堂明镜悲白发,朝如青丝暮成雪⑶。人生得意须尽欢⑷,莫使金樽空对月。天生我材必有用,千金散尽还复来。烹羊宰牛且为乐,会须一饮三百杯⑸。岑夫子,丹丘生⑹,将进酒,杯莫停⑺。与君歌一曲⑻,请君为我倾耳听。";
    CGRect textFrame = CGRectMake(0, 0, 250, 250);
    NSDictionary *dict = @{NSFontAttributeName:[UIFont systemFontOfSize:20],
    NSForegroundColorAttributeName:[UIColor redColor],
    NSStrokeWidthAttributeName:@5
    };
    UIRectFill(textFrame);
    //不会换行
    //[text drawAtPoint:CGPointZero withAttributes:dict];
    [text drawInRect:textFrame withAttributes:dict];
    

    直接使用label.numberOfLines = 0;//相当于不限制行数
    一句话也可以搞定

    相关文章

      网友评论

          本文标题:iOS 01、UILabel的(size)高度自适应

          本文链接:https://www.haomeiwen.com/subject/janqcxtx.html