swift 计算字体的宽度

计算字体宽度

/**
 * 计算宽度  内容 字体大小
 */
public func textWidth(text: String, font: UIFont) -> CGFloat {
    //给定的最大宽度、因为计算宽度,高度无所谓
    let size = CGSize(width: 20000, height: 100) 
    let attributes =   [NSAttributedString.Key.font: font]
    let labelSize:CGRect = NSString(string: text).boundingRect(with: size, options: .usesLineFragmentOrigin, attributes: attributes, context: nil)
    return labelSize.width
}
//或者
extension String {
    /**
     * 计算字体宽度 字体大小
     */
    public func textWidth(font: UIFont) -> CGFloat {
        let str         = self as NSString
        let size        = CGSize(width: 20000, height: 100)
        let attributes  = [NSAttributedString.Key.font:  font]
        let labelSize   = str.boundingRect(with: size, options: .usesLineFragmentOrigin, attributes: attributes, context: nil).size
        return labelSize.width
    }
}

计算字体高度

/**
 * 计算高度  字体宽度  内容(根据宽度计算高度)  字体大小
 */
public func textHeight(width: CGFloat, text: String, font: UIFont) -> CGFloat {
    let size = CGSize(width: width, height: 2000)
    let attributes =   [NSAttributedString.Key.font: font]
    let labelSize:CGRect = NSString(string: text).boundingRect(with: size, options: .usesLineFragmentOrigin, attributes: attributes, context: nil)
    return labelSize.height
}
extension String { 
    /**
     * 计算字体高度  字体宽度(根据宽度计算高度) 字体大小
     */
    public func textHeight(textWidth: CGFloat, font: UIFont) -> CGFloat {
        let str         = self as NSString
        let size        = CGSize(width: textWidth, height: 2000)
        let attributes  = [NSAttributedString.Key.font: font]
        let labelSize   = str.boundingRect(with: size, options: .usesLineFragmentOrigin, attributes: attributes, context: nil).size
        return labelSize.height
    }
}

你可能感兴趣的:(swift 计算字体的宽度)