2

我的英语很糟糕,我不知道该怎么形容。

请看我先上传的图片。这是尤利西斯的截图。

在此处输入图像描述

这应该是一个 NSTextView 控件。选中所有文本后,我发现它可以控制特定段落的左侧偏移量。

我试着模仿它。

但是我发现NSMutable Paragraph Style好像并没有达到这样的效果,只能达到类似下图的效果。

在此处输入图像描述

简单来说,就是想要实现上一张图的效果,但只有第二张图的效果。

又看了一个问题,不过主要是关于背景色的,想知道缩进的问题,这样才能得到更多的结果。

NSTextView 选择突出显示所有字符,甚至段落缩进

Ulysses 是如何实现的?

4

1 回答 1

3

fillBackgroundRectArray(_: count:forCharacterRange:color:)您可以通过在子类中覆盖来修改选择的绘图矩形NSLayoutManager

class MyLayoutManager: NSLayoutManager {

    override func fillBackgroundRectArray(_ rectArray: UnsafePointer<NSRect>, count rectCount: Int, forCharacterRange charRange: NSRange, color: NSColor) {
        // selection rects to draw a highlight.
        var rects: [NSRect] = Array(UnsafeBufferPointer(start: rectArray, count: rectCount))

        // modify rects here...

        // call super and pass in your custom rects array.
        super.fillBackgroundRectArray(&rects, count: rectCount, forCharacterRange: charRange, color: color)
    }

}

你可以实现这样的目标:

在此处输入图像描述


顺便说一句,您可以使用以下方法替换文本视图的布局管理器:

textView.textContainer?.replaceLayoutManager(MyLayoutManager())
于 2019-02-21T10:49:34.180 回答