NSTextView如何使文本在行的中间
问题描述:
class ViewController: NSViewController {
@IBOutlet var editView: NSTextView!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
let
paragraphStyle = NSParagraphStyle.default().mutableCopy() as! NSMutableParagraphStyle
paragraphStyle.lineHeightMultiple = 1.6
editView.defaultParagraphStyle = paragraphStyle;
//editView.typingAttributes[NSFontAttributeName] = paragraphStyle;
editView.typingAttributes[NSParagraphStyleAttributeName] = paragraphStyle;
}
override var representedObject: Any? {
didSet {
// Update the view, if already loaded.
}
}
}
这是我的所有代码,在main.storyboard中,只有一个NSTextView控件。NSTextView如何使文本在行的中间
但是我的文本是绘制的,它都是从行底部开始的,这不是我想要的。我希望能够将文本保持在行的垂直位置。我还没有找到这方面的案例,请帮我解答。谢谢
答
您可以使用NSAttributedStringKey.baselineOffset(NSBaselineOffsetAttributeName斯威夫特3)调整行中的文本的垂直位置。当然,你需要编写一些代码来计算你的行高,并找到正确的基线使用,但此代码示例应该给你的基本思路:
class ViewController: NSViewController {
@IBOutlet var editView: NSTextView!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
let paragraphStyle = NSParagraphStyle.default.mutableCopy() as! NSMutableParagraphStyle
paragraphStyle.lineHeightMultiple = 1.6
editView.defaultParagraphStyle = paragraphStyle
editView.typingAttributes[.paragraphStyle] = paragraphStyle
editView.typingAttributes[.baselineOffset] = 15
}
override var representedObject: Any? {
didSet {
// Update the view, if already loaded.
}
}
}
BaselineOffset可以做到这一点,但它将使lineHeightMultiple更难控制,因为实际高度是lineHeightMultiple + baselineOffset,有没有其他方便的方法? –