虽然乔恩·赫斯能说明问题很好(只要子视图的宽度变为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;
}
}
}
是的,这实际上是我最终做了什么。实际上在BWToolkit的分割视图中存在一些错误,但在版本1.2.5中已经修复 – Austin 2010-01-28 19:54:04