美文网首页iOS Developer
Swift 3.0 Lable高度自适应,cell高度适应也可用

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

作者: Double丶K | 来源:发表于2017-02-13 12:08 被阅读85次

    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高度适应也可用

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