【发布时间】:2013-07-05 12:13:25
【问题描述】:
当我在我的程序中使用 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 并且它现在可以工作了。不知道为什么会发生这种情况,但确实如此。结束这个问题。
【问题讨论】:
-
实际运行应用时是否会出现导航栏? (顶部的栏显示您拥有的服务时间和数量等)
-
您显示图片的尺寸检查器是来自一个移动的按钮,还是包含它们的视图,还是留在同一位置的左上角按钮之一?
-
@AlbertRenshaw 在 IB 中或运行时没有导航栏或状态栏。
-
@Inafziger 我展示的尺寸检查器是移动的按钮。视图的尺寸检查器基本相同,但自动尺寸支柱(我认为这就是他们所说的)是左上而不是左和右。所有其他按钮都与我发布的图片相同。
-
@fiorgodx 我会在您的 .m 文件中进行搜索并查找 (cmd+f) 以查看您是否在其他任何地方移动按钮
.center = CGPointMake....frame = CGRectMake。 .. 只是self.theButton
标签: ios interface-builder cgrectmake