首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AutoLayout问题

AutoLayout问题
EN

Stack Overflow用户
提问于 2013-05-27 09:36:24
回答 2查看 2K关注 0票数 1

我与Autolayout (在一个新的应用程序中第一次使用它)作斗争。

以下情况:

  • 故事板
  • iPad
  • 启用Autolayout

在一个Popover,我需要重新布局8个按钮编程,根据用户选择。这很好,直到按钮必须旋转180°(要倒转,这是一个应用程序功能)。

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

案例1:

按钮0-按钮1-按钮2-按钮3

按钮4,按钮5,按钮6,按钮7

案例2:

按钮7,按钮6,按钮5,按钮4

按钮3-按钮2-按钮1-按钮1

(所有按钮旋转180°,即倒转)

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

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

代码在viewDidAppear中

代码语言:javascript
复制
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。

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

谢谢,祝你今天愉快,罗尼

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-05-27 11:02:11

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

票数 1
EN

Stack Overflow用户

发布于 2013-10-16 06:49:36

在上一个Xcode版本中,Bug或意外行为有了一些改进,但仍然很混乱。例如,您仍然不能独立地关闭一个XIB上的AutoLayout,而不会造成后果,尽管其他XIB上的复选框在单个XIB上更改时不会更改。

你想做的是:

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

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

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16770296

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档