国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Swift計算文本寬高

2019-11-14 18:38:54
字體:
來源:轉載
供稿:網友

 iOS 8 開始可以配合 AutoLayout 自動估算文本的高度,但是當 Cell 比較復雜的時候,還會需要手動去計算。首先聲明一個樣式

var TextStyle : [String : NSObject] {      get {        let paraStyle = NSMutableParagraphStyle()        paraStyle.minimumLineHeight = 17.3        paraStyle.lineSpacing = 0        paraStyle.lineBreakMode = NSLineBreakMode.ByWordWrapping        paraStyle.paragraphSpacing = 0        paraStyle.paragraphSpacingBefore = 0        return [NSForegroundColorAttributeName: UIColor.blackColor(),            NSKernAttributeName: CGFloat(0.5),            NSFontAttributeName: UIFont.systemFontOfSize(15.0),            NSParagraphStyleAttributeName: paraStyle        ]    }}

如果你的文本里含有很多特殊字符,例如顏文字,通過 NSKernAttributeName 設置字間距可以算出更寬松的結果。

以 UILabel 為例,設置其 attributedText

label.attributedText = NSAttributedString(string: "Hello World", attributes: TextStyle)) 

再利用 boundingRectWithSize 這個方法來計算其約束后的高度,傳入一個 width 為寬度約束,然后利用我們聲明的樣式來計算高度。

func sizeHeightWithText(attrString: NSString, width: CGFloat, textAttributes: [NSObject : AnyObject]) -> CGSize {    var rect = attrString.boundingRectWithSize(CGSizeMake(width, CGFloat.max), options: .UsesLineFragmentOrigin | .UsesFontLeading, attributes: textAttributes, context: nil)    return CGSize(width: rect.width, height: rect.height)}

如果你使用的是 UITextView,那么還需要對 UITextView 做一些處理來去掉他的邊距。

textView.textContainer.lineFragmentPadding = 0  textView.textContainerInset = UIEdgeInsetsZero  

 

 
 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 朝阳区| 中超| 大姚县| 班玛县| 金华市| 嵩明县| 临朐县| 云南省| 合山市| 望江县| 克东县| 福州市| 潢川县| 林州市| 绥江县| 永登县| 龙川县| 冷水江市| 罗定市| 明水县| 定兴县| 会东县| 乌兰察布市| 梅州市| 托克逊县| 开远市| 商南县| 宜昌市| 东方市| 锦屏县| 清远市| 嫩江县| 汶上县| 霍州市| 辽阳市| 合水县| 和硕县| 广水市| 吐鲁番市| 扬州市| 新郑市|