我有一个包含两个窗格的NSSplitView-左侧的侧边栏表视图和右侧的Web视图。我也有一个委托集,用于处理侧边栏的约束,如下所示:

- (CGFloat)splitView:(NSSplitView *)splitView constrainMaxCoordinate:(CGFloat)proposedMax ofSubviewAt:(NSInteger)dividerIndex {
    return 500.0f;
}

- (CGFloat)splitView:(NSSplitView *)splitView constrainMinCoordinate:(CGFloat)proposedMinimumPosition ofSubviewAt:(NSInteger)dividerIndex {
    return 175.0f;
}

- (BOOL)splitView:(NSSplitView *)splitView canCollapseSubview:(NSView *)subview {
    return NO;
}


这意味着侧栏只能在175到500像素之间调整大小,并且在使用分隔线手柄时可以正常工作。但是,当调整整个窗口的大小时,分隔线将重新定位于这些约束之外。

有人知道如何控制吗?

另外:如果我要存储用户选择的侧边栏宽度,是否应该将其读出,保存到首选项文件中,然后再恢复,还是有更简单的方法呢?我注意到在某些情况下会保存窗口的状态-这通常是在发生这种情况还是需要对其进行控制?

提前致谢

Arne

最佳答案

您正在寻找的是:

- (void)splitView:(NSSplitView*)sender resizeSubviewsWithOldSize:(NSSize)oldSize


[sender frame]将是调整后的NSSplitView的新大小。然后只需相应地重新调整子视图。

10-08 02:43