[英]NSSplitView not resizing subviews after dynamically adding a subview
[英]NSTabView prevents closing of NSSplitView subview
我有一個復雜的應用程序,我正在使用 NSSplitView 創建各種側邊欄,這些側邊欄可以通過重力打開/關閉(即,將分隔欄拖動到足夠靠近邊緣並完全關閉視圖),就像 XCode 一樣用戶界面。
當隱藏的嵌套視圖不包含 NSTabView / NSTabViewControllerView 時,使用 splitView(_:constrainSplitPosition:ofSubviewAt:) 效果很好,但是如果它包含 window 拒絕完全關閉而使 tabView 可見。
class ViewController: NSViewController, NSSplitViewDelegate {
override func viewDidLoad() {
super.viewDidLoad()
splitView.delegate = self
}
@IBOutlet var splitView: NSSplitView!
@IBOutlet var tabView: NSTabView!
let gravityTolerance: CGFloat = 180.0
func splitView(
_ splitView: NSSplitView,
constrainSplitPosition proposedPosition: CGFloat,
ofSubviewAt dividerIndex: Int
) -> CGFloat {
print("proposed splitter width: \(dividerIndex) => \(proposedPosition)")
var retVal = proposedPosition
if dividerIndex == 0 {
if proposedPosition <= gravityTolerance {
// tabView.isHidden = true
retVal = 0.0
} else {
// tabView.isHidden = false
}
}
return retVal
}
}
將選項卡視圖設置為“isHidden”沒有任何區別,我很確定如果我手動編寫代碼,它會正常工作。 但是我缺少一些簡單的修復(也許是約束)嗎?
從 Willeke 的評論......就像一個魅力。 似乎有很多我不知道的蘋果特定的支持:(顯然一個可以比這更花哨)
func splitView(
_ splitView: NSSplitView,
canCollapseSubview subview: NSView
) -> Bool
{
return true
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.