使用autolayout导致按钮停止工作

时间:2012-09-25 07:01:51

标签: iphone ios xcode ios6 autolayout

我试图为我的.xib文件中的视图添加使用自动布局功能, 目标是根据正确的屏幕尺寸调整视图。

当我将自动布局添加到视图并设置自由形式并将视图大小更改为568时,视图在iPhone 5模拟器上正确显示但是当尝试按下底部的按钮时,如果我运行相同的应用程序则它们无法正常工作在iPhone 4上,视图看起来正确,按钮正常工作。

我错过了什么?任何人都知道教程或我在哪里可以找到如何转换常规xib而不使用autolayout工作的信息?

3 个答案:

答案 0 :(得分:1)

有可能你的按钮没有坐在他们的超级视图之上。您需要将按钮的超级视图限制在超级视图的底部。

不幸的是,如果没有看到任何东西,它很难帮助你。

答案 1 :(得分:0)

我遇到了同样的问题。就我而言:

self.view
 \- ...
  \_self.wrapper
       \_self.button

代码不起作用:

NSDictionary *metrics = @{@"padding":[NSNumber numberWithFloat:kGridPadding]};

[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-[head]-padding-[wrapper]-|" options:0 metrics:metrics views:views]];

原因是'wrapper'的高度为0,尽管按钮仍然可见。因此可以通过提供足够的宽度和高度来修复它:

NSDictionary *metrics = @{@"padding":[NSNumber numberWithFloat:kGridPadding],
                          @"screenHeight":[NSNumber numberWithFloat:self.view.bounds.size.height]};

[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-[head]-padding-[wrapper(screenHeight)]-|" options:0 metrics:metrics views:views]];

- >更好的方法是让包装纸的高度自动增加,但我现在不知道怎么做?

答案 2 :(得分:0)

我参加派对有点晚了,但我认为你必须在你的按钮上添加约束,只需将其添加到xib文件中即可。

这是一个link到AutoLayout教程和/或您可以观看 WWDC会话将提供一些见解:

2012

  • iOS和OS X的自动布局简介(会话202)
  • 掌握自动布局的最佳实践(会议228)
  • 按示例自动布局(会话232)


2013

  • 控制Xcode 5中的自动布局(会话406)