国产探花免费观看_亚洲丰满少妇自慰呻吟_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  

 

 
 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 浠水县| 安达市| 邹城市| 会理县| 汝城县| 惠来县| 伊宁市| 曲松县| 隆回县| 乐都县| 新巴尔虎右旗| 清徐县| 涿鹿县| 宝应县| 蒙城县| 定西市| 桂平市| 榆树市| 商都县| 新竹县| 米林县| 柳河县| 湖南省| 万山特区| 昆明市| 禄丰县| 抚顺市| 呼玛县| 连城县| 张掖市| 泰州市| 伊宁市| 郁南县| 盐城市| 望奎县| 二手房| 武穴市| 陇南市| 澄城县| 邯郸市| 瓦房店市|