CGRectMake将我的UIButton放在错误的位置

时间:2013-07-05 12:13:26

标签: ios interface-builder cgrectmake

当我在程序中使用 CGRectMake 时,它表现得非常奇怪。在Interface Builder中,我的按钮的坐标为(260, 388),并且始终处于纵向模式。当我输入以下代码(仅用于实验)时,它应该保持在同一个地方,X值很好但是Y值将它放在一个更像300的位置。

self.theButton.frame = CGRectMake(260, 388, 120, 120);

CGRectMake中是否存在一些导致坐标变得棘手的怪癖?没有其他代码行影响此按钮的大小或形状,当我注释掉这一行时,按钮位于IB的正确位置。

编辑:Autolayout未开启。 编辑:问题似乎是我的代码的框架的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

编辑:我的规模检查员:

Size Inspector

这里的第一张图片是我的IB的一部分(正确)。第二个图像是当我运行程序时,你看到一个项目按钮与放大镜重叠(忽略低alpha)。

IB correcdt Program incorrect

编辑:经过进一步的实验,看起来使用CGRect来移动UIViews在viewDidLoad中使用它时完全没问题。我将代码移动到viewDidAppear,它现在可以工作了。不知道为什么会这样,但确实如此。关闭这个问题。

4 个答案:

答案 0 :(得分:0)

查看您如何阅读IB中的坐标w.r.t。

enter image description here enter image description here

答案 1 :(得分:0)

我遇到了同样的问题。尝试关闭Autolayout。它对我有用!

答案 2 :(得分:0)

由于您的每个按钮都在屏幕上逐渐向下移动,因此在包含您的按钮的视图上选择似乎是“自动调整大小子视图”,并且伸展到更高的高度。

这可能是因为在IB中你在iPhone 4上进行布局而你正在测试的模拟器/实际设备是iPhone 5.对于视图改变大小还有其他解释,但这很可能。 / p>

答案 3 :(得分:0)

经过进一步的实验,看起来使用CGRect来移动UIViews在viewDidLoad中使用它时完全没问题。我将代码移动到viewDidAppear,它现在可以工作了。不知道为什么会这样,但确实如此。关闭这个问题。