簡體   English   中英

如何根據 Mac OS 中的窗口大小隱藏子 NSView?

[英]How to hidden the sub NSView according to the window size in Mac OS?

我正在快速編寫 MacOS 應用程序。 窗口中的主要布局如下:

應用程序的布局

NSStackView 有一個 sideBar (NSTableView) 和一個 NSView。 我想要實現的目標列在這里:

  1. 更改窗口大小時,sideBar 的寬度是固定的。
  2. 當窗口的寬度小於WIDTH_THRESHOLD ,sideBar 被隱藏。

問題

  1. 對於Target 1,sideBar 和NSView 的約束如下,但不起作用,sideBar 的寬度仍然改變。

限制條件

  1. 對於 Target 2,項目有一個NSWindowController和一個NSViewController 我可以在NSWindowController監聽窗口大小,但我不知道如何將此消息傳輸到NSViewController以隱藏側欄。

請注意,NSStackView 在大小檢查器中具有Hugging PriorityClipping Resistance PriorityVisibility Priorities等屬性,我是否可以通過設置這些屬性來實現目標(如下圖)?

屬性

  1. 您是否限制了側邊欄的寬度? 如果您還沒有,那么可能發生的情況是NSView正在自動調整大小並推動側邊欄。 更改紅色箭頭不會創建實際約束,只會更改調整大小規則。

  2. 就像您說的那樣,在NSWindowController收聽窗口大小。 只要您在該窗口類中有對側邊欄的引用(例如,您可以訪問包含它的視圖控制器),您就可以在窗口太小時設置sideBar.isHidden = true當窗口太小時設置為false又夠大了。

  1. 最后,我使用 NSSplitView 作為 sideBar,它更容易。

  2. 我使用NSSplitViewDelegate來監聽 SplitView 的寬度變化。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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