2015-07-05 277 views
0

我有一個NSSplitView有兩個水平子視圖。左邊是一個NSOutlineView,右邊是一個NSTableView。左視圖對寬度有兩個約束:1)> = 150和2)< = 200.所以我有一個最小和最大寬度。NSSplitView部分摺疊

func splitView(splitView: NSSplitView, canCollapseSubview subview: NSView) -> Bool {我返回true爲左子視圖。這工作,但完全隱藏左視圖(應該)。

我的目標是,而不是正常的方式,左視圖只能收縮,比如說50px。有什麼辦法可以達到這個目標嗎?我想過編碼。在func splitView(splitView: NSSplitView, resizeSubviewsWithOldSize oldSize: NSSize),但這不是正確的方式使用自動佈局(我試過了,但設置子視圖的框架導致重新加載NSTableView在每次改變Splitview divider(這會導致tableview失去每一個選擇)) 。

回答

0

首先,無論您想要調用該行爲,Cocoa調用摺疊子視圖都不是這樣。所以,不要在摺疊方面考慮。

其次,您不能指定最小寬度約束,然後期望系統忽略它。如果您希望視圖有時只有50點寬,則不能將約束設置爲> = 150點。

您可以嘗試執行代理方法splitView(_:constrainSplitPosition:ofSubviewAt:),使分隔位置「捕捉」到150點極限和50點極限。也就是說,它可以允許任何職位> = 150分。對於100到150點之間的位置,它將調整到150點。對於低於100點的位置,它將調整到50點。