1

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

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

我错过了什么?任何人都知道教程或我在哪里可以找到如何在没有自动布局的情况下转换常规 xib 工作的信息?

4

3 回答 3

1

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

不幸的是,没有看到任何东西,除此之外很难为您提供任何帮助。

于 2012-09-27T12:58:08.680 回答
0

我参加聚会有点晚了,但我认为除了将其添加到 xib 文件中之外,您还必须为按钮添加约束。

这是 AutoLayout 教程的链接和/或您可以观看WWDC 会议将提供一些见解:

2012

  • iOS 和 OS X 的自动布局简介(第 202 节)
  • 掌握自动布局的最佳实践(第 228 课)
  • 示例自动布局(第 232 课)


2013

  • 在 Xcode 5 中控制自动布局(会话 406)
于 2014-12-14T19:07:54.617 回答
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]];

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

于 2013-11-15T08:44:07.163 回答