我正在经历我认为是一个非常奇怪的问题。
首先,我的应用程序使用以下示例命令在屏幕上移动UI元素:
[view setFrame:NSRectFromCGRect(CGRectMake(0, 0, 0, 0))];
我允许用户使用此命令将应用程序的NSWindow调整为另一个大小:
[self.window setFrame:NSRectFromCGRect(CGRectMake(0, 0, 0, 0)) display:YES animate:YES];
当处于“调整大小模式”时,我显然会将每个setFrame
命令更改为适当的坐标系。
然而,存在一个问题:当(如果)用户通过再次单击按钮切换回原始NSWindow大小,并且应用程序再次执行UI移动时,移动的视图不在该位置他们应该在。
澄清一下:我的UI移动代码在正常模式或调整大小模式下一遍又一遍地运行良好。但是,如果我从一个切换到另一个,则会移动一些项目(不是全部)。
可能导致这种奇怪行为的原因是什么?我使用相同的命令(在每个屏幕分辨率内),NSLogs确认UI元素位于我指定的位置;但是,这个位置显然不是我试图迁移的位置。
有没有人在这里遇到过类似的问题?
答案 0 :(得分:1)
您可能在Interface Builder中设置了某种自动调整模板,这会干扰您的手动展示位置。进入笔尖并移除“尺寸”检查器中的所有弹簧和支柱。虽然如果可能,您应该让自动调整处理放置,或者移动到10.7中引入的自动布局。
答案 1 :(得分:0)
经过几天和几天的尝试,我得出以下结论:调整大小的代码根本无效。
我在调整窗口大小后使用NSLog确认了这一点。最后,我通过在传统setFrame:
方法之后添加以下行来更改调整大小代码:
[self.window setContentSize:NSSizeFromCGSize(CGSizeMake(desiredWidth, desiredHeight))];