2012-10-18 129 views
3

我正在研究iPad应用程序。在主屏幕上有6个在IB中创建的按钮。我想从代码动态安排它们,但我不能。 已经尝试设置对象的框架/中心,但它们没有移动。如何设置按钮位置?

我有一个数组,它包含按钮出口,并将它们排列在for循环中。 有什么建议吗?

谢谢!

编辑:

下面是一些代码(不是全部,但其余的现在是无关紧要的),通过按键我怎么循环。按钮插口已正确设置。按钮的标题更改正确,我也可以隐藏/显示按钮,但不是位置。

如果我只是尝试一些伪代码,如: tempBtn.frame = CGRectMake(100.0, 200.0, 60.0, 40.0); 没有变化(但我怀疑所有的6个按钮应该是在相同的位置)

// I have this array, which contains the button outlets 

tAddBtnArray = [NSArray ArrayWithObjects:tAddBtn1,tAddBtn2,tAddBtn3,tAddBtn4,tAddBtn5,tAddBtn6, nil]; 

//I loop through the array, set button title, and trying to change the y position 
for(int i=0;i<6;i++){ 
     UIButton *tempBtn = [tAddBtnArray objectAtIndex:i]; 
     [tempField setText:@"Set some title"]; 
    } 
+0

你可以添加你使用的代码吗?您是否将插座映射到Interface Builder中的按钮? – hukir

+0

是的,我用一些代码编辑了原始问题。正如我写的一样,一切看起来都很有效(可以在buttton上设置几乎所有的东西) – user1756687

+0

你能告诉我这段代码在哪里运行吗?什么方法调用? – hukir

回答

2

我敢打赌,我知道它是什么。您是否在xib文件上启用了自动布局功能?如果是这样,框架正在设置,然后正在评估约束,这些约束将按钮移回他们被分配的位置。

你有两个选择:

  1. 关闭自动布局,让您可以自行管理框架。
  2. 保留自动布局,但更新约束以及框架。

我会建议关闭自动布局功能,但我不是特别喜欢它,所以它只是一种偏好。

+0

谢谢伙伴!我完全错过了这可能是因为我关掉了它,现在一切正常 – user1756687

+0

是的,我遇到过很多与自动布局混淆有关的问题最简单的方法就是做一个动画,然后视图跳回到动画之前的位置 – hukir

+0

我无法想象为什么有人会更喜欢旧的弹簧/支撑或手动布局来自动布局,但即使你不喜欢它,也应该使用它,这是很重要的,其中包括但不限于其他方法;其他方法不能很好地处理任意的UI缩放因子(它们会导致四舍五入的结果在UI布局中),并且它们对于本地化UI不太适用。如果您需要动态更改布局,则应该只使用自动布局API。 @ user1756687 – bames53

4

您可以用这种方式编程添加uibbutons :

UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
[button addTarget:self 
      action:@selector(yourMethod:) 
forControlEvents:UIControlEventTouchDown]; 
[button setTitle:@"Jesus Gil y Gil" forState:UIControlStateNormal]; 
button.frame = CGRectMake(100.0, 200.0, 60.0, 40.0); 
[view addSubview:button]; 
+0

谢谢,我知道如何添加代码按钮,我只是好奇,为什么我不能改变位置,如果我在IB中创建它 – user1756687

+0

是的,你可以改变位置,但你必须添加由interfaz生成器引用此按钮,然后做任何你想要的东西 – Aitul