南鑫林 5 rokov pred
rodič
commit
fcea07f719

+ 46 - 3
RainbowPlanet/RainbowPlanet/Tools/Extension/Extension+String.swift

@@ -189,7 +189,12 @@ extension String {
         return jsonStr
     }
     
-    static func getArrayFromJSONString(jsonString:String) ->NSArray{
+    
+    /// json转数组
+    ///
+    /// - Parameter jsonString: jsonstring
+    /// - Returns: 数组
+    static func getArrayFromJSONString(jsonString:String) ->NSArray {
         
         let jsonData:Data = jsonString.data(using: .utf8)!
         
@@ -202,7 +207,7 @@ extension String {
     }
     
     //改变指定字符串中内容的颜色
-    func changeTextColor(rangStr : String, rangColor : UIColor) ->NSAttributedString{
+    func changeTextColor(rangStr : String, rangColor : UIColor) ->NSAttributedString {
         let strg = self
         let ranStr = rangStr
         //所有文字变为富文本
@@ -215,7 +220,7 @@ extension String {
         return attrstring
     }
     //改变指定字符串中内容的颜色
-    func changeTextColorFont(rangStr : String, rangColor : UIColor,font:UIFont) ->NSAttributedString{
+    func changeTextColorFont(rangStr : String, rangColor : UIColor,font:UIFont) ->NSAttributedString {
         let strg = self
         let ranStr = rangStr
         //所有文字变为富文本
@@ -228,9 +233,47 @@ extension String {
         return attrstring
     }
     
+    /// 富文本
+    ///
+    /// - Returns: html
     func setHTMLImgStyle() -> String {
         let str = "<head><style>img{width:\(kScreenWidth) !important;height:auto}</style></head>\(self)"
         return str
 
     }
+    
+    
+    /// 计算string 内容的宽度
+    ///
+    /// - Parameters:
+    ///   - font: 字体
+    ///   - height: 高度
+    /// - Returns: 返回宽度
+    func widthForComment(font: UIFont, height: CGFloat = 15) -> CGFloat {
+        let rect = NSString(string: self).boundingRect(with: CGSize(width: CGFloat(MAXFLOAT), height: height), options: .usesLineFragmentOrigin, attributes: [NSAttributedString.Key.font: font], context: nil)
+        return ceil(rect.width)
+    }
+    
+    /// 计算string 内容的高度
+    ///
+    /// - Parameters:
+    ///   - font: 字体
+    ///   - width: 宽度
+    /// - Returns: 返回高度
+    func heightForComment(font: UIFont, width: CGFloat) -> CGFloat {
+        let rect = NSString(string: self).boundingRect(with: CGSize(width: width, height: CGFloat(MAXFLOAT)), options: .usesLineFragmentOrigin, attributes: [NSAttributedString.Key.font: font], context: nil)
+        return ceil(rect.height)
+    }
+    
+    /// 计算string 内容的高度
+    ///
+    /// - Parameters:
+    ///   - font: 字体
+    ///   - width: 宽度
+    ///   - maxHeight: 最大高度
+    /// - Returns: 高度
+    func heightForComment(font: CGFloat, width: CGFloat, maxHeight: CGFloat) -> CGFloat {
+        let rect = NSString(string: self).boundingRect(with: CGSize(width: width, height: CGFloat(MAXFLOAT)), options: .usesLineFragmentOrigin, attributes: [NSAttributedString.Key.font: font], context: nil)
+        return ceil(rect.height)>maxHeight ? maxHeight : ceil(rect.height)
+    }
 }