• Das kreative Thema des Monats Oktober wird vor allem diejenigen unter Euch besonders ansprechen, denen Do-it-yourself quasi im Blut liegt. Zeigt uns Eure Improvisationskünste oder fotografiert, was andere Leute sich so im Alltag zusammengestrickt haben. --> Zum Mitmachen bitte hier klicken

NSSplitView Grössenänderung

Poljpocket

Salvatico di Campascio
Registriert
07.01.07
Beiträge
432
Hallo,

ich hab mich durch die ganze Dokumentation des NSSplitViews durchgeschlagen, jedoch nicht auf alle meine Unklarheiten Antworten gefunden. Mir ist schnell klar geworden, dass es für meine Bedürfnisse sicher eine delegate braucht, die das View steuert (sozusagen :D).

Ich möchte ein vertical-Splitview mit einem Divider, der nur in einem gewissen Bereich (min- und maxvalue) bewegt werden kann. Dies muss ich wohl mit einer delegate-Methode steuern, denn im IB gibts keine Parameter, die man entsprechend setzen kann. Weiter hab ich im IB die autoresize-Values so gesetzt, dass sich das SplitView ständig an der Grösse des Fensters anpasst. Dabei ist mir aufgefallen, dass beide Subviews gleichmässig vergrössert werden, wenn man die Breite des Fensters ändert. Ich möchte aber, dass sich nur das rechte Subview mit dem Fenster vergrössert wird und das linke gleich breit bleibt. Das Ganze soll iTunes-like agieren (sieht im Aufbau auch iTunes-like aus!).

Ich weiss nicht, vielleicht ist es am einfachsten, die Sache an einem Beispiel zu zeigen. Hat jemand schon mal sowas gemacht und könnte mir den source der delegate schicken? wäre sehr nett!

Danke und freundliche Grüsse, ppocket
 
Erst einmal ist es lobenswert, dass du an ein Delegate denkst.

Ich habe jetzt nicht nachgeprüft, ob das wirklich nicht im IB geht. Hast du auch mal die Min-/Max-Size der Subviews gesetzt? Vielleicht nimmt er darauf Rücksicht. (Daumenregel: Splitviews sind strunzedumm.)

Für die Vergrößerung des Views musst du splitview:resizeSubviewsWithOldSize: implementieren.

Für das Dragging der Divider geht es über
splitView:constrainMaxCoordinate:ofSubviewAt:
und
splitView:constrainMinCoordinate:ofSubviewAt:
oder
splitView:constrainSplitPosition:ofSubviewAt:

Es kann sogar sein, dass die letzten reichen. Daher würde ich damit anfangen.