美文网首页
Swift 获取 NSAttributedString / St

Swift 获取 NSAttributedString / St

作者: 麦志超 | 来源:发表于2023-04-06 10:10 被阅读0次

NSAttributedString

extension NSAttributedString {
    
    /// 获取文本高度
    func getHeight(width: CGFloat) -> CGFloat {
        let height = self.boundingRect(with: CGSize(width: width, height: CGFloat(MAXFLOAT)), options: [.usesLineFragmentOrigin], context: nil).size.height
        
        return ceil(height)
    }
    
    /// 获取文本宽度
    func getWidth(height: CGFloat) -> CGFloat {
        let width = self.boundingRect(with: CGSize(width: CGFloat(MAXFLOAT), height: height), options: [.usesLineFragmentOrigin], context: nil).size.width
        
        return ceil(width)
    }
}

String

extension String {
    
    func getHeight(width: CGFloat, font: UIFont, lineSpacing: CGFloat = 0) -> CGFloat {
        
        let attStr = NSMutableAttributedString(string: self)
        let paragraphStyle = NSMutableParagraphStyle()
        paragraphStyle.lineSpacing = lineSpacing
        attStr.addAttributes([NSAttributedString.Key.font : font, NSAttributedString.Key.paragraphStyle : paragraphStyle], range: NSRange(location: 0, length: attStr.length))
        let height = attStr.boundingRect(with: CGSize(width: width, height: CGFloat(MAXFLOAT)), options: [.usesLineFragmentOrigin], context: nil).size.height
        
        return ceil(height)
    }
    
    func getWidth(height: CGFloat, font: UIFont, lineSpacing: CGFloat = 0) -> CGFloat {
        
        let attStr = NSMutableAttributedString(string: self)
        let paragraphStyle = NSMutableParagraphStyle()
        paragraphStyle.lineSpacing = lineSpacing
        attStr.addAttributes([NSAttributedString.Key.font : font, NSAttributedString.Key.paragraphStyle : paragraphStyle], range: NSRange(location: 0, length: attStr.length))
        let width = attStr.boundingRect(with: CGSize(width: CGFloat(MAXFLOAT), height: height), options: [.usesLineFragmentOrigin], context: nil).size.width
        
        return ceil(width)
    }
}

相关文章

网友评论

      本文标题:Swift 获取 NSAttributedString / St

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