objective-c - 相同的命令,不同的结果 setFrame : NSView

标签 objective-c cocoa nsview nswindow

我遇到了一个我认为非常奇怪的问题。

首先,我的应用程序使用以下示例命令在屏幕上移动 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 移动时,移动的 View 不在该位置他们应该在。

澄清一下:我的 UI 移动代码在正常或调整大小模式下一遍又一遍地运行良好。但是,如果我从一种切换到另一种,某些项目(不是全部)会发生变化。

什么可能导致这种奇怪的行为?我使用完全相同的命令(在每个屏幕分辨率内),并且 NSLogs 确认 UI 元素位于我指定的位置;但是,这个位置显然不是我想要移动到的位置。

有人遇到过类似的问题吗?

最佳答案

您可能在 Interface Builder 中设置了某种自动调整大小 mask ,这会干扰您的手动放置。进入您的 Nib 并卸下尺寸检查器中的所有 Spring 和支柱。不过,如果可能的话,您应该让自动调整大小来处理放置,或者转向 10.7 中引入的自动布局。

关于objective-c - 相同的命令,不同的结果 setFrame : NSView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9204132/

相关文章:

objective-c - 混合使用 Objective-C、C++ 和 OpenCV

ios - 重新定义外部 block (promiseKit)

cocoa - 我的自定义类应该设置为我的引用 socket 吗?

objective-c - 如何在Cocoa中使用Image Cell(图像)对NSTableView进行排序?

cocoa - 遍历 NSManagedObjectContext 对象?

ios - 非美国国家/地区的 PK 联系方式和邮政编码

ios - XCode 断点在当前行中不起作用。它停止威胁而不是当前行

macos - NSButton imagePosition 不起作用

macos - 如何以编程方式设置 NSView 大小?

objective-c - 如何指定在 Objective-C 中绘制哪个 NSView?