Moim celem jest stworzenie widoku podobnego do edytora tekstu Goole Docs z podświetlaniem komentarzy za tekstem, w którym znajdują się komentarze. NSTextView wewnątrz NSView i NSScrollView
Moje rozwiązanie ma mieć NSScrollView
zawierający NSView
(ustawiony jako widoku dokumentu), który przewija i zawiera zarówno NSTextView
tekstu i innych NSView
s to będzie pasemka.
Aby to zadziałało, NSTextView
musi mieć rozmiar tak, jakby należał bezpośrednio do NSScrollView
. Jednak nie mogę sprawić, aby to zachowanie miało wartość NSTextView
.
kod mam dla układu to:
LatinViewController: loadview()
...
let latinView = LatinView()
latinView.autoresizingMask = [.ViewWidthSizable]
latinView.wantsLayer = true
latinView.layer?.backgroundColor = Theme.greenColor().CGColor
self.latinView = latinView
scrollView.documentView = latinView
...
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
...
można to zrobić?
To wygląda na świetne rozwiązanie. Inne rozwiązanie, o którym myślałem, to dodanie instancji 'CALayer' pod główną warstwą' NSTextLayer' w 'NSTextView', aby pokazać podświetlanie, ale to rozwiązanie wygląda lepiej. Co myślisz? – jamespick