自动布局问题

时间:2013-05-27 09:36:25

标签: ios6 storyboard autolayout

我正在努力应对Autolayout(在新应用中第一次使用它)。

以下情况:

  • 故事板
  • ipad公司
  • 启用Autolayout

在一个Popover中,我需要根据用户选择以编程方式重新布局8个按钮。这个工作正常,直到按钮必须旋转180°(上下颠倒,这是一个应用程序功能)。

只要我为旋转添加代码,重新布局就不再起作用了。 我不明白为什么我可以改变按钮的位置(如情况2),但是,当它旋转时它不再起作用。

案例1:

按钮0 |按钮1 |按钮2 |按钮3
按钮4 |按钮5 |按钮6 |按钮7

案例2:

BUTTON 7 |按钮6 |按钮5 |按钮4
按钮3 |按钮2 |按钮1 |按钮1
(所有按钮旋转180°,即颠倒翻转)

关闭AutoLayout后,它就像魅力一样。 问题是,一旦我关闭AutoLayout,应用程序的其余部分就完全搞砸了。

如果有人能帮助我理解这个问题,那将会很棒。

代码在viewDidAppear

for (UIButton *button in self.allButtons) {

    if (button.tag == i) {

       button.transform = CGAffineTransformMakeRotation(M_PI);

       button.frame = CGRectMake((300 - (100 * currentButtonPosition)) + offsetWidthButton, offsetHeightButton, 100, 100);
       NSLog(@"Button Tag Nr: %d\nFrame:\nX=%f\nY=%f\nW=%f\nH=%f",button.tag, button.frame.origin.x, button.frame.origin.y, button.frame.size.width, button.frame.size.height);

                    }

                }

按钮的框架坐标在NSLog输出中都是正确的。我想某种方式,button.transform搞砸了.frame = CGRectMake部分,但为什么我不理解,并期待你的帮助或指导,继续研究神秘的autoLayout。

希望解释是可以理解的: - )

谢谢你,祝你有个愉快的一天 罗尼

2 个答案:

答案 0 :(得分:1)

如果您正在使用自动布局,则应更改约束,而不是设置按钮的框架。

答案 1 :(得分:1)

在上一个Xcode版本中,错误或意外行为有所改善,但它仍然很混乱。例如,您仍然无法独立地在一个XIB上关闭AutoLayout而不会产生任何后果,尽管在单个XIB上更改其他复选框时不会更改。

您想要做的是:

在关闭AUto Layout之前,根据所有视图中的约束设置帧,删除应用程序中所有视图中的所有约束,然后关闭自动布局。

这当然不那么痛苦,你在IB中设置了约束而不是以编程方式设置约束。

遗憾的是,自动布局仍然远远落后于预期的功能,它们尤其缺乏定义和识别内在位置,甚至在自动设置约束时更糟糕。这是一个广阔的改进领域。