Frage

Ich habe eine NSSplitView mit einem NSScrollView in der Unteransicht bekommt. Das Problem ist, wenn ich kollabiere, und dann wieder zu öffnen, (un-Kollaps) die Unteransicht, wobei die Höhe der Bildlaufansicht ist über die Höhe der Unteransicht so der obere Teil der Scoll Ansicht abgeschnitten wird. Ich habe meine Ansicht blättern und meine geteilte Ansicht gesetzt bekam in alle Richtungen in IB AUTORESIZE. Muß ich die Höhe der Scroll-Ansicht nach dem un-Zusammenbruch anzupassen oder bin ich ein Ändern der Größe Eigenschaft falsch, oder etwas anderes einstellen? Nachfolgend finden Sie eine vor und nach dem Bild dessen, was wie das Clipping aussieht.

Vor dem Kollaps:

alt text

Nach dem Schließen und wieder öffnen (beachten Sie die Bildlaufleiste in der Ansicht von unten abgeschnitten wird)

alt text

War es hilfreich?

Lösung

Ich habe das gleiche Problem. Fest es BWToolkit gespaltene Ansichten verwenden, die Ihnen erlauben, die maximale und minimale Höhe für jede Ansicht zu bestimmen.

Andere Tipps

Das Problem ergibt sich aus der Tatsache, dass Kakao der automatischen Regeln arbeiten von Deltas aus dem vorherigen Zustand auf den aktuellen Stand zu skalieren. Wenn eine der Ränder auf 0 gehen werden sie nie wieder einen größeren Maßstab als die Aussicht wegen der multaplicative Natur der Skalierung wächst.

Der typische Ansatz, um dies zu arbeiten, ist die NSSplitView Delegatmethoden zu verwenden, aus der geteilten Ansicht zu verhindern, zu klein bekommen und es dann geschlossen hat Snap -., Die intern den kollabierte Blick auf der Mindestgröße hält

Hier ist ein Link auf die geteilte Ansicht Dokumentation .

Auch, wenn Sie über die Benutzererfahrung denken, Ihre Ansichten aussehen wahrscheinlich wirklich schrecklich, wenn sie unter einem bestimmten Punkt Größe nach unten - Ansichten wahrscheinlich überlappende beginnen, und immer zu klein, um ihre Inhalte zu zeigen. Durch Hinzufügen dieses Knacken kollabierende Verhalten behebt beide Probleme.

Wenn Sie ein Beispiel dafür, Mac OS X Mail.app schnappt seine Inline-Nachrichtenansicht sehen wollen geschlossen, wenn es auf eine bestimmte Höhe bekommt. Sie sollten dieses Verhalten nachahmen.

Sie könnten „Reset“ Dinge über NSUserDefaults, möglicherweise .. Es gibt Tasten für solche Dinge wie NSSplitView Subview Frames, usw., an die Sie Koordinaten zuordnen, a la 0.000000, 0.000000, 0.000000, 720.000000, NO

Während Jon Hess das Problem gut beschreiben konnte (sobald ein Subview der Breite 0 wird die automatisch angepasst werden Informationen für Auto-Breite Elemente verloren gehen), wird die Lösung nicht wirklich für alle Fälle gegeben. die Breite beschränke nicht in meinem Fall helfen, da die subview zusammengeklappt werden kann.

ich es geschafft, eine akzeptable Lösung zu erreichen, indem Sie die SPLITVIEW- Delegatmethode -splitviewWillResizeSubviews Durchführung: eine Mindestbreite zu halten, indem die Subview versteckte Einstellung, anstatt es auf Null schrumpfen:

- (void)splitViewWillResizeSubviews:(NSNotification *)notification {
        NSUInteger divider = [[[notification userInfo] valueForKey:@"NSSplitViewDividerIndex"] intValue];
        NSView *subview = nil;
        if(divider == SPLITVIEW_DIVIDER_SIDEBAR) {
            subview = (NSView*)[self.splitView.subviews objectAtIndex:SPLITVIEW_SIDEBAR_INDEX];
        }
        if(subview) {
            if(subview.frame.size.width < SPLITVIEW_MINIMUM_SIDEBAR_WIDTH) {
                CGRect correctedFrame = subview.frame;
                correctedFrame.size.width = SPLITVIEW_MINIMUM_SIDEBAR_WIDTH;
                subview.frame = correctedFrame;
                subview.hidden = YES;
            } else {
                subview.hidden = NO;
            }
        }
    }
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top