我是OS X可可開發新手,正在使用Yosemite的Storyboards開發Swift應用程序。如何使用自動佈局設置NSSplitView面板的最小和初始寬度?
在我的應用程序的主窗口中,我有一個NSSplitViewController。對於左側和右側的每個面板,我添加了一個將包含所有子視圖的根自定義視圖。
使用自動佈局,我已將自定義視圖在拆分視圖中查看的邊緣,還定義了一個約束的自定義視圖的寬度要大於或等於一最小數量。
這一切工作正常。當窗口打開時,窗口寬度是兩個面板的最小寬度約束的總和。我無法弄清楚的是下一步。
如何給自定義視圖設置另一個寬度約束,以便當窗口打開時,它的初始寬度高於最小值(可以說是300)?我想要的是面板可以小到200,但我想要的初始大小爲300.我不希望窗口在允許的最小寬度下打開。然後,用戶將不得不每次調整大小,這不是一個好的用戶體驗。
爲了嘗試完成此操作,我爲自定義視圖中的較低優先級(嘗試了所有不同的值200,500,800等)的300添加了另一個寬度約束,但沒有一個會給我期望的結果寬度值是300,並具有200
的最小寬度必須有做到這一點的方式面板,但我只是難倒如何。請幫忙!
更新
下面是constraintsAffectingLayoutForOrientation輸出爲NSSplitViewController的看法:
<NSLayoutConstraint:0x6000000923e0 H:|-(0)-[NSView:0x600000124c40] (Names: '|':NSView:0x600000124ba0)>,
<NSLayoutConstraint:0x6000000924d0 H:[NSView:0x600000124c40]-(0)-| (Names: '|':NSView:0x600000124ba0)>,
<NSLayoutConstraint:0x600000092070 H:[NSView:0x600000124c40(>=200)]>,
<NSLayoutConstraint:0x600000092660 _NSSplitViewItemViewWrapper:0x6000001416b0.width == NSView:0x600000124ba0.width>,
<NSLayoutConstraint:0x600000093a10 H:|-(0)-[_NSSplitViewItemViewWrapper:0x6000001416b0](LTR) (Names: '|':NSSplitView:0x608000123b60)>,
<NSLayoutConstraint:0x600000093b50 H:[_NSSplitViewItemViewWrapper:0x6000001416b0]-(1)-[_NSSplitViewItemViewWrapper:0x6000001429f0](LTR)>,
<NSAutoresizingMaskLayoutConstraint:0x600000093d80 h=-&- v=-&- H:[NSSplitView:0x608000123b60]-(0)-| (Names: '|':NSView:0x6000001242e0)>,
<NSAutoresizingMaskLayoutConstraint:0x600000093b00 h=-&- v=-&- H:|-(0)-[NSSplitView:0x608000123b60] (Names: '|':NSView:0x6000001242e0)>,
<NSAutoresizingMaskLayoutConstraint:0x600000094050 h=-&- v=-&- H:|-(0)-[NSView:0x6000001242e0] (Names: '|':NSThemeFrame:0x100940be0'Main Window')>,
<NSLayoutConstraint:0x600000093c40 H:[_NSSplitViewItemViewWrapper:0x6000001429f0]-(0)-|(LTR) (Names: '|':NSSplitView:0x608000123b60)>,
<NSLayoutConstraint:0x600000092890 H:[NSView:0x600000124f60]-(0)-| (Names: '|':NSView:0x600000124ec0)>,
<NSLayoutConstraint:0x6000000926b0 H:[NSView:0x600000124f60(>=400)]>,
<NSLayoutConstraint:0x608000099d20 _NSSplitViewItemViewWrapper:0x6000001429f0.width == NSView:0x600000124ec0.width>,
<NSLayoutConstraint:0x600000092840 H:|-(0)-[NSView:0x600000124f60] (Names: '|':NSView:0x600000124ec0)>]
由於大量約束,通過排序的,我決定做一個全新的測試項目和看看這是不是開箱即用,還是我在應用程序中改變了一些設置。在測試項目中,我剛剛刪除了視圖控制器,在窗口中添加了一個分割視圖控制器,併爲每個面板添加了兩個簡單的文本視圖。然後運行該項目,左側面板被摺疊。所以我爲每個文本視圖添加了一個最小寬度約束,然後在測試項目中發生了同樣的情況。無論我在故事板中設置了什麼,窗口大小都是最小寬度的添加。也許唯一的方法是通過代碼設置窗口/拆分視圖大小。