【问题标题】:ios app layout on device is not the same as on the Xcode simulator设备上的 ios 应用程序布局与 Xcode 模拟器上的不同
【发布时间】:2014-09-18 11:48:52
【问题描述】:

我正在使用 Xcode 6。我正在开发一个通用应用程序。当设备处于纵向或横向时,我通过设置约束调整了主屏幕布局。

问题是按钮在 iOS 模拟器上调整正确,但是当我在 iPhone 5s 上测试它时,横向屏幕不会改变其布局并且按钮出现在屏幕外 即布局与纵向模式相同。

我已经玩了几天的限制,只是不知道为什么它不起作用。

【问题讨论】:

  • 如果没有问题可以上传代码吗?
  • 我忘了说我正在使用故事板
  • 这是它在模拟器上的样子:picture1 picture2 在实际设备上:picture1 picture2
  • 确保约束没有被标记为在构建时被移除。选择约束,然后在实用工具栏中查看属性检查器(右侧的栏,其中的第四个选项卡看起来像一个滑块)。底部有一个不应选中的复选框。另一种可能性是包含控制器的视图未正确调整到屏幕大小。 -- 有很多事情可能出错,几乎不可能在没有看到您的代码/文档的情况下提供更多指导。

标签: ios xcode constraints autolayout xcode6


【解决方案1】:

我正在就如何处理这个问题与 Apple 联系。今天下午我升级到 XCode 6,我也遇到了同样的事情。我将 XCode 5.1.1 重新安装到我的机器上,清理了我的项目并在模拟器和我的设备上运行它。一切都按预期运行。

在我的例子中,自定义集合视图单元被加载到 UI 集合视图中。在 nib 文件中,我设置了前导、尾随、顶部和底部约束集,以便对象填充其父视图。我的设备运行的是 iOS 7。这些约束在 XCode 5.1.1 中被解释为预期的那样,但 XCode 6 中的行为发生了变化。这种行为完全是一场灾难。最重要的是,我现在收到以下警告:

2014-09-22 19:36:04.447 bugIllustration[11817:60b] UICollectionViewFlowLayout 的行为未定义,因为: 2014-09-22 19:36:04.449 bugIllustration[11817:60b] 项目宽度必须小于 UICollectionView 的宽度减去部分插入左右值。

【讨论】:

  • 我发现的问题是,在 Xcode 6 中,纵向和横向的约束在 iOS 8 中完美运行,但在 iOS 7 中,约束以某种方式被布局覆盖“iPhone 纵向或横向”
  • 哇...这太奇怪了。当我将设备升级到 iOS 8 时,我可能会看到同样的情况。我拿了上面 Fabian 的设备。我什至不知道这些细节的存在。哈哈。不用说,不需要通过 Interface Builder 执行任何操作。我试图避免对 Layout Flow 类进行子类化,因为我认为这没有必要。从上到下,有问题的组件是如何组织的?你是怎么处理这个问题的?
  • 我最终只是忽略了布局:仅纵向,仅横向。并在“iphone 纵向或横向”布局中工作。我在该布局中设置了约束,因为您同时使用两个方向,因此在情节提要的同一屏幕上设置约束有点困难。这样做的最终结果并不那么漂亮。
  • 我想我会采取同样的方向。我也忽略了布局(模拟指标-> 方向)。这让我想起了当我在 iOS 5 推出时有幸解决有关方向问题的不幸经历。大声笑
猜你喜欢
  • 1970-01-01
  • 2014-05-14
  • 2012-04-19
  • 2012-04-20
  • 2015-10-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-25
相关资源
最近更新 更多