当我在我的程序中使用CGRectMake时,它的行为非常奇怪。在 Interface Builder 中,我的按钮的坐标为(260, 388)
并且始终处于纵向模式。当我输入以下代码(只是为了实验)时,它应该保持在同一个地方,X 值很好,但 Y 值把它放在一个更像 300 的位置。
self.theButton.frame = CGRectMake(260, 388, 120, 120);
CGRectMake 中是否有一些怪癖导致坐标变得扭曲?没有其他代码行会影响此按钮的大小或形状,当我注释掉此行时,按钮位于 IB 的正确位置。
编辑:自动布局未打开。编辑:问题似乎是我的代码对框架 Y 值的概念和 IB 的概念不匹配。
按钮 1.1 到 3.2 在这里按从上到下的顺序列出。根据 IB,按钮编号后的第一个数字是它们的(正确)Y 值。第二个数字是根据 NSLog 的 button.frame.origin.y 的 Y 值。最后一个数字是差异。差异呈指数增长,每次增加 50 或 51。这显然是问题所在,我正在使用 IB 的 y 值系统设置我的 CGRectMake,但代码使用了一些其他数字作为 Y 值。关于为什么的任何想法?
按钮 -> IB Y 值 -> NSLog Y 值 -> 差异
1.1 -> 4 -> 5 -> 1
1.2 -> 132 -> 184 -> 52
1.3 -> 260 -> 362 -> 102
3.1 -> 388 -> 541 -> 153
3.2 -> 516 -> 719 -> 203
编辑:我的尺码检查员:
这里的第一张图片是我的 IB 的一部分(正确)。第二张图片是当我运行程序时,您会看到一个 Item 按钮与放大镜重叠(忽略低 alpha)。
编辑:经过进一步试验,似乎使用 CGRect 来移动 UIViews 工作得很好,除了在 viewDidLoad 中使用它时。我将代码移动到 viewDidAppear 并且它现在可以工作了。不知道为什么会发生这种情况,但确实如此。结束这个问题。