我的應用程序通過NSWindowController
從XIB文件中加載窗口和按鈕。在-windowDidLoad
中,我基於窗口的大小以編程方式設置按鈕的框架,根據哪些按鈕可見,窗口的大小可以變化。在XIB中爲這些按鈕適當地設置了自動調整掩碼。問題是,當窗口實際出現時,按鈕顯示爲沒有應用自動調整。通過非Set-SetFrame設置的NSView框架:自動調整後
在調試這個問題時,我調用NSButton
並覆蓋-setFrame:
在調用super的-setFrame:
之後打印幀([self frame]
)。使用它,我觀察到框架被設置了兩次:第一次是我的編程佈局代碼(調用此框架A),後來一旦Cocoa根據用戶首選項調整窗口大小(應用自動調整掩碼,將框架設置爲B)。這些幀都看起來正確。
但是,當窗口出現時,彷彿後面的-setFrame:
調用沒有持久的效果 - 按鈕的框架現在回到A.這通過打破調試器並打印框架來驗證 - 自動調整框架更新已被恢復,但-setFrame:
從未再次被調用。
任何想法爲什麼我可能會看到這種行爲?