簡體   English   中英

NSTabView 防止關閉 NSSplitView 子視圖

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM