2017-08-03 18 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コントロールは1つだけです。NSTextViewは行の途中でテキストを作る方法

しかし、私のテキストが描かれていて、それはすべて私が望むものではない行の最下部から始まります。私は行の垂直位置にテキストを保持できるようにしたい。私はこの分野の事件を見つけていない、私は答えてください。あなたは

enter image description here

答えて

0

あなたがライン内のテキストの垂直位置を調整するためにNSAttributedStringKey.baselineOffset(スウィフト3でNSBaselineOffsetAttributeName)を使用することができ感謝しています。もちろん使用するように行の高さを計算し、正しいベースラインを見つけるために少しのコードを記述する必要がありますが、このサンプルコードは、あなたの基本的なアイデアを与える必要があります。

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 + baselineOffsetなので、他の便利な方法はありますか?lineHeightMultipleは制御が難しいですか? –

関連する問題