2016-12-24 70 views
0

我使用相同的字体在textView中获得不同的行高为什么多行归因String UITextView具有不同的行高?

如何设置固定行高?

我已经做了很多的尝试,任何帮助表示赞赏,感谢

  • 集NSMutableParagraphStyle lineSpacing是没用的
  • 集lineHeightMultiple是赚取差价更加明显

[1]

demo

import UIKit 
import PlaygroundSupport 

let view = UIView(frame: CGRect(x: 0, y: 0, width: 400, height: 1000)) 
let data: [String] = [ 
    "商品名称: 巧克力", 
    "商品名称: 巧克力", 
    "商品名称: 巧克力", 
    "注册未成功,请验证电子邮件", 
    "注册未成功,请验证电子邮件", 
    "注册未成功,请验证电子邮件", 
    "测试文字, 测试文字,测试文字", 
    "测试文字, 测试文字,测试文字", 
    "测试文字, 测试文字,测试文字", 
] 
let textView = UITextView(frame: view.frame) 


let paragraphStyle = NSMutableParagraphStyle() 
let bodyFont = UIFont.systemFont(ofSize: 20.0) 
paragraphStyle.lineHeightMultiple = 4 
var stripe = false 

// attributedString 
let mutableAttributedString = NSMutableAttributedString(string: "Test TextViewAttributedString\n", attributes: [ 
    NSFontAttributeName: UIFont.systemFont(ofSize: 18.0) 
    ]) 

for text: String in data { 
    var backgroundColor = UIColor(red:0.13, green:0.38, blue:0.95, alpha:1.00) 
    if stripe { 
     backgroundColor = UIColor(red:0.92, green:0.12, blue:0.38, alpha:1.00) 
    } 

    let contentAttributedString = NSAttributedString(string: text, attributes: [ 
     NSBackgroundColorAttributeName: backgroundColor, 
     NSParagraphStyleAttributeName: paragraphStyle, 
     NSFontAttributeName: bodyFont 
     ]) 
    mutableAttributedString.append(contentAttributedString) 
    stripe = !stripe 

    // add newline character 
    let newlineAttributedString = NSAttributedString(string: "\n") 
    mutableAttributedString.append(newlineAttributedString) 
} 

textView.attributedText = mutableAttributedString 
view.addSubview(textView) 


PlaygroundPage.current.liveView = view 

回答

0

我找到了原因,newlineAttributedString还需要NSFontAttributeName

let newlineAttributedString = NSAttributedString(string: "\n", attributes: [ 
    NSFontAttributeName: bodyFont 
]) 
mutableAttributedString.appendAttributedString(newlineAttributedString) 
相关问题