Ein Ansatz, der nicht Maus hören erfordert zieht oder eine aktive Aktualisierung der Ansicht ist die automatische Layout zu verwenden:
1. Aufschalten dividerThickness
Ihre ideale Dicke zurückzukehren.
2. Überschreiben Sie dividerColor
, um zurück zu geben, wenn Ihre benutzerdefinierte Ansicht nicht undurchsichtig ist und wenn Sie nicht möchten, dass das Standardgrau durchscheint.
Wenn Sie ein minimales Implementierungsziel von 10.11 oder später:
3a. Setzen Sie in der Split-Ansicht arrangesAllSubviews
auf NO, und fügen Sie dann die benutzerdefinierte Teileransicht als Unteransicht der Split-Ansicht hinzu. (Ohne arrangesAllSubviews
auf NO zu setzen, das Hinzufügen der benutzerdefinierten Teiler Ansicht würde es als Spaltbereich hinzufügen)
Andernfalls, wenn Ihr Mindestimplementierungsziel ist < 10.11 (oder Sie können sonst nicht gesetzt arrangesAllSubviews
auf NO):
3b. hinzufügen Ihre benutzerdefinierten Teiler als Subview des Behälters aus der geteilten Ansicht, aber dafür, dass es höher in subview/z-Reihenfolge
4. Constraints In dieser Ansicht zu positionieren, wo der Teiler sein würde, zum Beispiel:
let constraints = [dividerView.topAnchor.constraint(equalTo: topPane.bottomAnchor),
dividerView.bottomAnchor.constraint(equalTo: topPane.bottomAnchor),
dividerView.leadingAnchor.constraint(equalTo: splitView.leadingAnchor),
dividerView.trailingAnchor.constraint(equalTo: splitView.trailingAnchor)]
NSLayoutConstraint.activate(constraints)
Auto-Layout wird sich um die Aktualisierung der Position der Teileransicht kümmern, wenn der Benutzer zieht.
Vielleicht hat der Delegierte einige Methoden, dies zu tun? Hast du überprüft? – Willeke
@Willeke ['NSSplitViewDelegate'] (https://developer.apple.com/reference/appkit/nssplitviewdelegate) enthält keine Funktionen, die ein' NSView' oder ähnliches zurückgeben –
Wie wäre es mit 'splitView (_: effectiveRect: forDrawnRect: ofDividerAt:) 'und' splitView (_: additionalEffectiveRectOfDividerAt:) '? – Willeke