gpt4 book ai didi

cocoa - 如何设置NSTextView的段落属性宽度

转载 作者:行者123 更新时间:2023-12-03 17:01:02 26 4
gpt4 key购买 nike

我的英语很糟糕,我不知道如何描述它。

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

enter image description here

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

我试图模仿它。

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

enter image description here

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

我看了另一个问题,但主要是关于背景颜色,我想知道缩进的问题,以便获得更多结果。

NSTextView selection highlights all characters even paragraph indents

尤利西斯是如何实现的?

最佳答案

您可以通过重写 NSLayoutManager 子类中的 fillBackgroundRectArray(_: count:forCharacterRange:color:) 来修改选择的绘制矩形。

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)
}

}

你可以实现这样的目标:

enter image description here

<小时/>

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

textView.textContainer?.replaceLayoutManager(MyLayoutManager())

关于cocoa - 如何设置NSTextView的段落属性宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54792392/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com