【发布时间】:2015-04-11 00:42:49
【问题描述】:
我的应用程序通过NSWindowController 从 XIB 文件加载一个窗口和该窗口内的按钮。在-windowDidLoad 中,我根据窗口大小以编程方式设置按钮的框架,这取决于哪些按钮可见)。在 XIB 中为这些按钮适当地设置了自动调整大小的蒙版。问题是当窗口实际出现时,按钮看起来好像没有应用自动调整大小。
在调试这个问题时,我继承了NSButton 并覆盖了-setFrame: 以在调用super 的-setFrame: 后打印帧([self frame])。使用它,我观察到框架设置了两次:首先是通过我的编程布局代码(调用此框架 A),然后一旦 Cocoa 根据用户偏好调整窗口大小(应用自动调整大小掩码,将框架设置为 B)。这些框架看起来都正确。
然而,当窗口出现时,就好像后面的-setFrame: 调用没有持久效果——按钮的框架现在回到了A。这可以通过调试器中断并打印框架来验证——自动调整大小帧更新已恢复,但从未再次调用 -setFrame:。
关于我为什么会看到这种行为的任何想法?
【问题讨论】:
标签: cocoa nsview autoresizingmask