2015-05-22 130 views
1

我有一個NSView內我的主視圖,防止我的窗口/主視圖正確調整大小。即使當我全屏時,我的主視圖也無法填滿屏幕(右側有一些黑色空間)。我知道,原因是特定的視圖(或內部),因爲當我刪除它,我的應用程序正常行爲。什麼會導致NSView「控制」其窗口的增長?NSView防止窗口/內容視圖水平調整大小

下面是該視圖的約束:

enter image description here

更新:我發現一個NSTextField在其內部已經擁抱proiorty設置爲750。我已經拍了下來到250,現在它會增長,但我無法從「某些」尺寸縮小它。我把它稱爲「一些」大小,因爲它沒有什麼特別之處:它比我的原始全屏寬度小一些,它和我的IB寬度不同。

+1

通常,優先級高於'NSLayoutPriorityWindowSizeStayPut'(500)的約束可以強制窗口的大小。這包括由內在內容大小產生的隱式約束,如果視圖具有這樣的內容,則其具有爲內容擁抱和壓縮抵抗而設置的優先級。要進行調試,請嘗試記錄'[window.contentView constraintsAffectingLayoutForOrientation:NSLayoutConstraintOrientationHorizo​​ntal]'(或'... Vertical',如適用)。如果您需要幫助解釋輸出,請將其添加到您的問題中。 –

+0

@KenThomases我看到,那麼水平壓縮阻力/擁抱優先級750是壓倒一切的默認窗口大小。你能否將它作爲答案發布,以便我可以接受它? –

回答

2

通常,優先級高於NSLayoutPriorityWindowSizeStayPut(500)的約束可以強制窗口的大小。這包括由內在內容大小產生的隱式約束,如果視圖具有這樣的內容,則其具有爲內容擁抱和壓縮抵抗而設置的優先級。因此,如果您有一個文本字段,其水平內容擁抱優先級爲750,並且有一系列約束將其前後邊緣連接到窗口的內容視圖的邊緣(或類似地,將文本字段的寬度設置爲內容視圖的寬度),那麼該窗口將不會變得足夠大以「伸展」該文本字段。

同樣,如果文本字段的水平壓縮阻力很高,窗口將無法縮小到文本字段必須被壓縮的程度。