2 Stimmen

Wie kann ich die Höhe meiner Ansicht nach dem Zusammenklappen von NSSplitView fixieren?

Ich habe eine NSSplitView mit einer NSScrollView in der unteren Ansicht. Das Problem ist, wenn ich die untere Ansicht zusammenklappe und dann wieder öffne (nicht zusammenklappe), ist die Höhe der Bildlaufansicht größer als die Höhe der unteren Ansicht, so dass der obere Teil der Bildlaufansicht abgeschnitten wird. Ich habe meine Scroll-Ansicht und meine geteilte Ansicht in IB auf automatische Größenanpassung in alle Richtungen eingestellt. Muss ich die Höhe der Scroll-Ansicht nach dem Entfalten anpassen, oder habe ich eine Eigenschaft zur Größenanpassung falsch eingestellt, oder etwas anderes? Unten sehen Sie ein Vorher- und Nachher-Bild, wie das Clipping aussieht.

Vor dem Zusammenbruch:

alt text

Nach dem Zusammenklappen und erneuten Öffnen (beachten Sie, dass die Bildlaufleiste in der unteren Ansicht abgeschnitten ist)

alt text

4voto

Jon Hess Punkte 14197

Das Problem ergibt sich aus der Tatsache, dass Kakao-Autoresizing-Regeln durch Skalierung von Deltas vom vorherigen Zustand zum aktuellen Zustand funktionieren. Wenn einer der Ränder auf 0 gehen sie nie wieder skalieren, wie die Ansicht wächst wegen der multaplicative Natur der Skalierung.

Der typische Ansatz zur Umgehung dieses Problems besteht darin, die NSSplitView-Delegatmethoden zu verwenden, um zu verhindern, dass die geteilte Ansicht zu klein wird, und sie dann zuzuklappen - wodurch die zusammengeklappte Ansicht intern auf der Mindestgröße gehalten wird.

Hier ist ein Link zum Dokumentation der geteilten Ansicht .

Wenn Sie an die Benutzererfahrung denken, sehen Ihre Ansichten wahrscheinlich wirklich schrecklich aus, wenn sie unter einen bestimmten Punkt verkleinert werden - die Ansichten beginnen sich wahrscheinlich zu überlappen und werden zu klein, um ihren Inhalt zu zeigen. Das Hinzufügen dieses Einrast- und Zusammenklappverhaltens behebt beide Probleme.

Ein Beispiel dafür ist die Mail.app von Mac OS X, die ihre Inline-Nachrichtenansicht schließt, wenn sie eine bestimmte Höhe erreicht hat. Sie sollten dieses Verhalten imitieren.

0voto

ruipacheco Punkte 13058

Ich habe das gleiche Problem. Ich habe es mit den geteilten Ansichten von BWToolkit behoben, mit denen Sie die maximale und minimale Höhe für jede Ansicht festlegen können.

0voto

Alex Gray Punkte 15268

Sie könnten Dinge über NSUserDefaults "zurücksetzen", möglicherweise. Es gibt Tasten für solche Dinge wie NSSplitView Subview Frames usw., denen Sie Koordinaten zuweisen können, a la 0.000000, 0.000000, 0.000000, 720.000000, NO

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X