Ich habe eine Instanz der benutzerdefinierten Klasse BigView
platziert, die eine Unterklasse von NSView
innerhalb einer NSScrollView
in IB ist. Die Inhaltsgröße meines BigView
wird zur Laufzeit berechnet. Was ist die beste Vorgehensweise zum Festlegen der Inhaltsgröße?Warum kann `intrinsicContentSize` in` NSView` nicht überschrieben werden, um `NSScrollView` zu verwenden?
intrinsicContentSize
Aufschalten, wie im The Big Nerd-Ranch Führung vorgeschlagen, nicht nicht zu funktionieren scheint - der Rahmen in seiner Originalgröße bleibt:
class BigView: NSView {
...
override var intrinsicContentSize: NSSize { // doesn't work?!
return NSSize(width: 10000, height: 10000)
}
...
}
den Rahmen einstellen programmatisch (oder in IB) funktioniert:
class BigView: NSView {
...
override func awakeFromNib() {
...
self.frame = NSRect(x: 0, y: 0, width: 10000, height: 10000)
}
...
}I
oder von der Steuerung:
class ViewController: NSViewController {
@IBOutlet weak var bigView: BigView!
...
override func viewDidLoad() {
super.viewDidLoad()
bigView.frame = NSRect(x: 0, y: 0, width: 1000, height: 1000)
}
...
}
Dies kann auch während der gesamten documentView
Eigenschaft Scroll erfolgen:
class ViewController: NSViewController {
@IBOutlet weak var scrollView: NSScrollView!
...
override func viewDidLoad() {
super.viewDidLoad()
scrollView.documentView?.frame = NSRect(x: 0, y: 0,
width: 1000, height: 1000)
}
...
}
Ich nehme man auch als auch Automatisches Layout Einschränkungen nutzen könnte.
Was überschreibt intrinsicContentSize
nicht?
Genau das gleiche Problem. Ich habe die Einstellung translateAutoresizingMaskIntoConstraints in der inneren Ansicht auf NO in der Ansicht in der XIB gefunden oder durch Überschreiben der Methode das Problem behoben. Aber jetzt bekomme ich zur Laufzeit eine Warnung über fehlende Einschränkungen. – Matt