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
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 14,679评论 1 92
  • 作者:HelKyle链接:http://www.w3cplus.com/css/when-to-use-em-vs...
    红叶丶秋鸣阅读 8,540评论 0 3
  • 学会使用CSS选择器熟记CSS样式和外观属性熟练掌握CSS各种选择器熟练掌握CSS各种选择器熟练掌握CSS三种显示...
    七彩小鹿阅读 11,422评论 2 66
  • 估计大盘近期继续上升,很有可能会触及3500点; 光迅科技,轻仓中,等待明确的加仓位置;今天做了个T, 成功;计划...
    W大先生阅读 1,547评论 0 0
  • 从校园到职场,是人生从零开始的过程,学生时代的成绩竞争,变成了另一种无形的竞争,不同的差距在很短时间内快速显现,善...
    思维小脑袋阅读 5,404评论 0 2