Swift3.0 label内容高度自适应

///label高度自适应
///
/// - Parameters:
///   - text: 文字
///   - labelWidth: 最大宽度
///   - attributes: 字体,行距等
/// - Returns: 高度
func autoLabelHeight(with text:String , labelWidth: CGFloat ,attributes : [String : Any]) -> CGFloat{
    var size = CGRect()
    let size2 = CGSize(width: labelWidth, height: 0)//设置label的最大宽度
    size = text.boundingRect(with: size2, options: NSStringDrawingOptions.usesLineFragmentOrigin, attributes: attributes , context: nil);
    return size.size.height
}

实例:

 let contentText = "就是对雷锋精神动力大幅降低肌肤啦圣诞节放大老师家看电视了附近的伤口附近丢失哦双节快乐对方角度来说 家里的沙发经历多少附近丢失了附近丢失了几行法师看对方发 三闾大夫就是大了发动机拉萨的激发了三十分 的士力架飞机似的 附近的伤口分 风急浪大开始见风使舵两附近分 时间的浪费教室里的风景"

 let attibute = [NSFontAttributeName:self.contentTextLabel.font]
let height = autoLabelHeight(with: contentText, labelWidth: SCREEN_WIDTH - 50*UIRate, attributes: attibute)

        //重新对label布局
        self.contentTextLabel.text = contentText
        self.contentTextLabel.snp.remakeConstraints({ (make) in
            make.width.equalTo(SCREEN_WIDTH - 50*UIRate)
            make.height.equalTo(height)
            make.centerX.equalTo(self.view)
            make.top.equalTo(divideLine1).offset(11*UIRate)
        })

OC版本

- (void)setupLabel {
      //准备工作
     UILabel *textLabel = [[UILabel alloc] init];
     textLabel.font = [UIFont systemFontOfSize:15];
      NSString *str = @"自适应大小自适应大小自适应大小自适应大小自适应大小自适应大小自适应大小自适应大小自适应大小自适应大小自适应大小自适应大小自适应大小自适应大小自适应大小自适应大小";
     textLabel.text = str;
     textLabel.numberOfLines = 0;  
     textLabel.lineBreakMode = NSLineBreakByTruncatingTail;
     //labelsize的最大值
     CGSize maximumLabelSize = CGSizeMake(300, 1000);
     //关键语句
     CGSize expectSize = [textLabel sizeThatFits:maximumLabelSize];
    //设置frame
    textLabel.frame = CGRectMake(20, 70, expectSize.width, expectSize.height); 
         [self.view addSubview:textLabel];
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值