2017-08-03 32 views
1
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如何使文本在行的中间

但是我的文本是绘制的,它都是从行底部开始的,这不是我想要的。我希望能够将文本保持在行的垂直位置。我还没有找到这方面的案例,请帮我解答。谢谢

enter image description here

回答

0

您可以使用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. 
     } 
    } 
} 
+0

BaselineOffset可以做到这一点,但它将使lineHeightMultiple更难控制,因为实际高度是lineHeightMultiple + baselineOffset,有没有其他方便的方法? –

相关问题