我的目標是製作一個類似於Goole Docs文本編輯器的視圖,其中註釋突出顯示評論後面的文本。 NSView和NSScrollView中的NSTextView
我的解決辦法是將具有含NSView
(設定爲文檔視圖)的NSScrollView
該卷軸和既包含文本和其他NSView
s表示將成爲亮點的NSTextView
。
要使用此功能,NSTextView
的尺寸必須與其直接屬於NSScrollView
一樣。但是,我不能讓NSTextView
有這種行爲。
我對佈局的代碼是:
LatinViewController:的loadView()
...
let latinView = LatinView()
latinView.autoresizingMask = [.ViewWidthSizable]
latinView.wantsLayer = true
latinView.layer?.backgroundColor = Theme.greenColor().CGColor
self.latinView = latinView
scrollView.documentView = latinView
...
拉丁語查看:的init()
...
let textView = LatinTextView()
textView.translatesAutoresizingMaskIntoConstraints = false
textView.string = "Long string..."
self.addSubview(textView)
self.textView = textView
self.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("H:|[text]|", options: NSLayoutFormatOptions(), metrics: nil, views: ["text": textView]))
self.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("V:|[text]|", options: NSLayoutFormatOptions(), metrics: nil, views: ["text": textView]))
...
LatinTextView:的init()
...
self.minSize = NSMakeSize(0, 0)
self.maxSize = NSMakeSize(0, CGFloat(FLT_MAX))
self.verticallyResizable = true
self.horizontallyResizable = false
self.textContainer?.heightTracksTextView = false
...
可以這樣做?
這看起來像一個很好的解決方案。我想到的另一個解決方案是在NSTextView的主NSTextLayer層下添加CALayer實例來顯示突出顯示,但這個解決方案看起來更好。你怎麼看? – jamespick