Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift NSTEXVIEW如何使文本在中间行_Swift_Macos_Nstextview - Fatal编程技术网

Swift NSTEXVIEW如何使文本在中间行

Swift NSTEXVIEW如何使文本在中间行,swift,macos,nstextview,Swift,Macos,Nstextview,这是我所有的代码,在main.storyboard中,只有一个NSTextView控件 但是我的文本是画出来的,而且都是从行的底部开始的,这不是我想要的。我希望能够将文本保持在行的垂直位置。我在这方面还没有发现病例,请帮我回答。多谢各位 您可以使用NSAttributedStringKey.baselineOffset(Swift 3中的NSBaselineOffsetAttributeName)来调整行中文本的垂直位置。当然,您需要编写一些代码来计算行高,并找到正确的基线来使用,但此代码示例应

这是我所有的代码,在main.storyboard中,只有一个NSTextView控件

但是我的文本是画出来的,而且都是从行的底部开始的,这不是我想要的。我希望能够将文本保持在行的垂直位置。我在这方面还没有发现病例,请帮我回答。多谢各位


您可以使用NSAttributedStringKey.baselineOffset(Swift 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[NSFontAttributeName] = paragraphStyle;
        editView.typingAttributes[NSParagraphStyleAttributeName] = paragraphStyle;

    }

    override var representedObject: Any? {
        didSet {
        // Update the view, if already loaded.
        }
    }
}

BaselineOffset可以实现这一点,但它会使lineHeightMultiple更难控制,因为实际高度是lineHeightMultiple+BaselineOffset,还有其他方便的方法吗?
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.
        }
    }
}