我的英语太糟糕了,我也不知道如何形容。
请查看我首先上传的图片。这是尤利西斯的截图。
这应该是一个NSTextView控件。选择所有文本后,我发现它可以控制特定段落的左侧偏移。
我试图模仿它。
但是我发现NSMutable段落样式似乎没有实现这种效果,它只能实现与下图类似的效果。
简而言之,我想实现上一张图片的效果,但只想获得第二张图片的效果。
我看了另一个问题,但主要是关于背景色,我想知道缩进的问题,以便获得更多的结果。
NSTextView selection highlights all characters even paragraph indents
尤利西斯如何实施?
答案 0 :(得分:1)
您可以通过覆盖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())