NSSplitView:如何不用窗口调整大小,只能以“手动”方式调整大小?

时间:2013-03-25 19:53:16

标签: objective-c nssplitview

我有一个简单的垂直NSSplitView并且当我调整窗口大小时我不会保持他的大小但是我想在拖动分隔的垂直条时手动调整NSSplitView的大小两种观点。

EDIT。这是我添加的代码,并且出于某种原因出错:左窗格(sourceView)在调整窗口大小时保持相同的大小,但右窗格具有正确的自动布局约束(在不实现下面的方法的情况下工作正常) 。 NSSrollView是左窗格,我不想保持在同一位置,而另一个视图可能会随窗口调整大小。

- (BOOL)splitView:(NSSplitView *)splitView shouldAdjustSizeOfSubview:(NSView *)subview
{
    if ([subview class] == [NSScrollView class])
        return NO;

    return YES;

}

任何人都知道快速解决方案吗?谢谢!

3 个答案:

答案 0 :(得分:6)

在Xcode 4.6中,垂直拆分视图的左侧自定义视图不是NSScrollView

@synthesize leftView;

- (BOOL)splitView:(NSSplitView *)splitView shouldAdjustSizeOfSubview:(NSView *)subview {
    if (subview == leftView) return NO;
    else return YES;
}

答案 1 :(得分:2)

尝试将拆分视图项的行为设置为补充工具栏

答案 2 :(得分:0)

您需要实施NSSplitViewDelegate。特别是,您需要确保为NO返回-splitView:shouldAdjustSizeOfSubview:,这将阻止自动调整大小。

由于每个splitView中至少有2个子视图,因此您需要确定不想移动哪个子视图,因此只返回NOYES查看你想要改变。因此,例如,如果您有源列表,并且希望它保持不变,除非在手动操作中,请返回NO作为源列表,并YES作为另一侧。