Swift文字相关的处理方法

2022-09-28  本文已影响0人  奋斗的遗忘人

1.计算加粗文本的宽度

/// 加粗文字的宽度
    /// - Parameters:
    ///   - text: 文本
    ///   - fontSize: 字体大小
    ///   - height: 高度
    /// - Returns:高度
    public static func textBoldWidth(text: String, fontSize: CGFloat, height: CGFloat) -> CGFloat {  
       return text.boundingRect(with:CGSize(width:CGFloat(MAXFLOAT), height: height), options: .usesLineFragmentOrigin, attributes: [.font:UIFont.boldSystemFont(ofSize: fontSize)], context:nil).size.width
    }
  1. 文字的高度
 /// 文字的高度
    /// - Parameters:
    ///   - text: 文本
    ///   - fontSize: 字体大小
    ///   - width: 宽度
    /// - Returns:高度
    public static func textHeight(text: String, fontSize: CGFloat, width: CGFloat) -> CGFloat { 
          return text.boundingRect(with:CGSize(width:width, height: CGFloat(MAXFLOAT)), options: .usesLineFragmentOrigin, attributes: [.font:UIFont.systemFont(ofSize: fontSize)], context:nil).size.height
    }

3.指定文字加粗或改变其属性的方法

/// 富文本改变指定文字的属性
    /// - Parameters:
    ///   - style: 正常文本属性
    ///   - highlightedText: 指定的文字
    ///   - highlightedTextStyle: 指定文字的属性
    /// - Returns: 返回富文本
    func attributedString(with style: [NSAttributedString.Key: Any]? = nil, and highlightedText: String, with highlightedTextStyle: [NSAttributedString.Key: Any]? = nil) -> NSAttributedString {
        let formattedString = NSMutableAttributedString(string: self, attributes: style)
        let highlightedTextRange: NSRange = (self as NSString).range(of: highlightedText as String)
        formattedString.setAttributes(highlightedTextStyle, range: highlightedTextRange)
        return formattedString
    }

调用方法:

 /// 特定文字加粗
  let attributedText = routeText.attributedString(with: [.font:UIFont.systemFont(ofSize: 16, weight: .regular), .foregroundColor:.black], and: totalDistance, with: [.font:UIFont.systemFont(ofSize: 20, weight: .bold), .foregroundColor:.black])
上一篇下一篇

猜你喜欢

热点阅读