我的应用程序通过NSWindowController
. 在-windowDidLoad
中,我根据窗口大小以编程方式设置按钮的框架,这取决于哪些按钮可见)。在 XIB 中为这些按钮适当地设置了自动调整大小的蒙版。问题是当窗口实际出现时,按钮看起来好像没有应用自动调整大小。
在调试这个问题时,我在调用 super's 后NSButton
继承并覆盖-setFrame:
以打印 frame ( ) 。使用它,我观察到框架设置了两次:首先是通过我的编程布局代码(调用此框架 A),然后一旦 Cocoa 根据用户偏好调整窗口大小(应用自动调整大小掩码,将框架设置为 B)。这些框架看起来都正确。[self frame]
-setFrame:
然而,当窗口出现时,就好像后一个-setFrame:
调用没有持久的效果——按钮的框架现在回到了 A。这通过在调试器中中断并打印框架来验证——自动调整框架的更新已经恢复,但-setFrame:
再也没有被叫过。
关于我为什么会看到这种行为的任何想法?