我有一个包含两个窗格的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
的新大小。然后只需相应地重新调整子视图。