雖然喬恩·赫斯能說明問題很好(只要子視圖的寬度變爲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