Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios6 自动布局问题_Ios6_Storyboard_Autolayout - Fatal编程技术网

Ios6 自动布局问题

Ios6 自动布局问题,ios6,storyboard,autolayout,Ios6,Storyboard,Autolayout,我正在努力使用Autolayout(这是我第一次在新的应用程序中使用它) 以下情况: 故事板 iPad 启用自动布局 在一个Popover中,我需要根据用户选择以编程方式重新布局8个按钮。在按钮必须旋转180°之前,此功能一直正常工作(倒置查看,这是应用程序的一项功能) 一旦我添加了旋转的代码,重新调整就不再有效了。 我不明白为什么我可以改变按钮的位置(如案例2),但是当旋转按钮时,它就不再工作了 案例1: 按钮0 |按钮1 |按钮2 |按钮3 按钮4 |按钮5 |按钮6 |按钮7 案例2:

我正在努力使用Autolayout(这是我第一次在新的应用程序中使用它)

以下情况:

  • 故事板
  • iPad
  • 启用自动布局
在一个Popover中,我需要根据用户选择以编程方式重新布局8个按钮。在按钮必须旋转180°之前,此功能一直正常工作(倒置查看,这是应用程序的一项功能)

一旦我添加了旋转的代码,重新调整就不再有效了。 我不明白为什么我可以改变按钮的位置(如案例2),但是当旋转按钮时,它就不再工作了

案例1:

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

案例2:

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

一旦自动布局关闭,它的工作就像一个魅力。 问题是,一旦我关闭自动布局,应用程序的其余部分就完全搞糟了

如果有人能帮我理解这个问题那就太好了

代码在视图中显示

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部分搞砸,但我不明白为什么,我期待着你的帮助或指导,继续研究神秘的自动布局

希望解释可以理解:-)

谢谢,祝你今天愉快
Ronnie

如果使用autolayout,则应更改约束,而不是设置按钮的框架

  • 这是斯坦福大学关于autolayout的一个很好的入门课程:
  • 下面是一个关于在Interface Builder中使用autolayout的示例
  • 这里有几个问题可以说明如何以编程方式添加约束,以及

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

您要执行的操作如下:

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

这当然不那么痛苦,因为您已经在IB中设置了约束,而不是通过编程


不幸的是,自动布局仍然远远落后于预期的功能,尤其是在定义和识别固有位置方面,甚至在自动设置约束方面更是如此。这是一个需要改进的巨大领域。

如果在
视图中不使用任何代码,会发生什么情况?我不明白你为什么需要它。根据用户在设置中的选择,只有5个按钮和不同的顺序。这就是为什么我需要以编程方式对它们重新排序。例如,它将是按钮1 |按钮3 |按钮5 |按钮6 |按钮7感谢指示。对于我在当前应用程序中需要的内容,我认为Autolayout是“过顶的”,我关闭了Autolayout,并重新显示了关闭后出错的所有内容。(很抱歉回复太晚,没有互联网)@MR Apps没问题,很高兴你能正常工作。自动布局一开始就有点混乱!