如何解决我的观点的崩溃NSSplitView之后的高度?(How do I fix the heig

2019-09-22 13:58发布

我有在底部查看与NSScrollView的NSSplitView。 问题是,当我崩溃,然后重新打开(未折叠)的底视图,滚动视图的高度超出底视图的高度,使所述scoll视图的顶部部分被裁剪。 我有我的滚动视图和我的设置在IB各个方向自动调整拆分视图。 我是否需要未崩溃后,以调整滚动视图的高度还是我设置调整财产错了,还是其他什么东西? 下面是一个什么样的剪裁看起来像之前和之后的图像。

崩溃之前:

折叠和重新打开之后(请注意在底视图中的滚动条被剪辑)

Answer 1:

我也有同样的问题。 使用BWToolkit的分割视图,它允许你确定每个视图的最大和最小高度固定它。



Answer 2:

这个问题的事实,可可自动尺寸规则通过按比例从以前的状态增量到当前的工作状态造成的。 如果任何利润的去0,他们永远不会缩减了作为视图的增长,因为缩放的multaplicative性质。

围绕这一工作的典型方法是使用NSSplitView委托方法,以防止越来越小拆分视图,然后把它扣关 - 在内部保持在最小尺寸的折叠视图。

这里的一个环节拆分视图文档 。

另外,如果你想在用户体验,你的意见很可能看起来很可怕,当他们的尺寸向下跌破某个点 - 观点可能会开始重叠,并且变得太小,以显示其内容。 添加此捕捉塌陷行为解决了这两个问题。

如果你想看到这样的一个例子,Mac OS X的Mail.app卡当它到达一定高度的内联邮件视图关闭。 你应该模仿这种行为。



Answer 3:

通过NSUserDefaults的你可以“重启”的东西,可能是。有键这样的事情NSSplitView Subview Frames等,来把它分配坐标,一拉0.000000, 0.000000, 0.000000, 720.000000, NO



Answer 4:

尽管乔恩·赫斯能(只要一个子视图的宽度变为0时自动调整大小的信息丢失的汽车宽度元素)说明问题好了,该解决方案是不是真的给了所有的情况。 约束宽度在我的情况没有帮助,因为子视图可​​以折叠。

我设法达到可接受的溶液,通过实施SPLITVIEW委托方法-splitviewWillResizeSubviews:由子视图设置为隐藏的,而不是它缩小到零以保持最小宽度:

- (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;
            }
        }
    }


文章来源: How do I fix the height of my view after collapsing NSSplitView?