Swift 3.0 Lable高度自适应,cell高度适应也可用

lable高度自适应主要就是指定宽度,获取文本的高度即可

第一种使用系统的计算方法,OC中有宏定义,所以可以使用CGFLOAT_MAX来设定高度,Swift中找了一个属性类进行代替,呈现的bug就是字体不是17号的时候会有计算误差.

let str = "夫斯川锦阳,盖自古四季斑斓、俊秀也。亘古以来,洪荒涤荡,复漫平陆。余创作小说《华原春梦》,耀州游历,十年七次涉此,堪踏古迹,寻访绿野仙踪。所得故事、传说、圣哲、大贤事迹者颇丰,素材累累。望离离平川,思昔日之牧歌,心旷远矣。桃林耕种,村姑回眸,后生扶犁,祥光照射,恬静而快乐。眺青黛远山,感大贤之卓越巍峨,且行且吟,衣襟风月,红尘难遮。"
        
        let lable = UILabel()
        lable.text = str
        lable.backgroundColor = UIColor.orange
        lable.font = UIFont.systemFont(ofSize: 11)
        lable.numberOfLines = 0
        lable.frame = CGRect.init(x: 10, y: 20, width: 130, height: 0)
        let atts =  [NSFontAttributeName: UIFont.systemFont(ofSize:17 )]
        let size =  str.boundingRect(with: CGSize(width: CGFloat(120), height: CGFloat.greatestFiniteMagnitude),options:NSStringDrawingOptions.usesLineFragmentOrigin, attributes:atts,context:nil).size
        lable.frame = CGRect(x: 10, y: 0, width: (size.width), height: (size.height))
        self.view.addSubview(lable)

第二种方法使用了sizeToFit属性,先把lable的高度设0,在赋值文本内容以后再获取lable的高度即可,然后重新定义高度

let str = "夫斯川锦阳,盖自古四季斑斓、俊秀也。亘古以来,洪荒涤荡,复漫平陆。余创作小说《华原春梦》,耀州游历,十年七次涉此,堪踏古迹,寻访绿野仙踪。所得故事、传说、圣哲、大贤事迹者颇丰,素材累累。望离离平川,思昔日之牧歌,心旷远矣。桃林耕种,村姑回眸,后生扶犁,祥光照射,恬静而快乐。眺青黛远山,感大贤之卓越巍峨,且行且吟,衣襟风月,红尘难遮。"
        
        let lable = UILabel()
        lable.text = str
        lable.backgroundColor = UIColor.orange
        lable.font = UIFont.systemFont(ofSize: 11)
        lable.numberOfLines = 0
        lable.frame = CGRect.init(x: 10, y: 20, width: 130, height: 0)
        
        lable.sizeToFit()
        height = lable.frame.size.height + 10
        lable.frame.size.height = height!
        self.view.addSubview(lable)

你可能感兴趣的:(Swift 3.0 Lable高度自适应,cell高度适应也可用)