【问题标题】:iOS 7 UI Difference between Simulator and real DeviceiOS 7 UI 模拟器和真实设备的区别
【发布时间】:2013-10-16 12:44:35
【问题描述】:

iOS7 使用 Storyboardsios simulator 有一个非常奇怪的问题:

我尝试通过设置iOS 6/7 deltas 来将旧项目更新为iOS7,以适应界面构建器中的状态栏,以获得我在情节提要中定义的视图。此视图设置为以编程方式创建的 UINavigationController 作为根视图。

当我这样做时,iOS7 iPad 模拟器 会显示正确的 UI - 我的视图显示在导航栏下方 - 但是,当我在 真正的 iOS7 iPad 上运行完全相同的代码时,它显示的视图太低了 20 像素;事实上,如果我根本不使用它在设备上显示的增量进行任何更改。

我不明白为什么在这种情况下模拟器和设备的行为不同 - 有人遇到过同样的问题吗?在我的其他项目中,我没有这个问题,所以我认为是故事板或其他设置导致了这种奇怪的行为。

更新:

有趣的是,在我在新 MacBook 上重新安装所有内容后,问题就消失了(可能也是最新的 Xcode 更新......)。

【问题讨论】:

  • 如何在视图上设置 iOS6/7 增量?
  • IB "View as iOS7 or later", iOS6/7 deltaY "-20", 并且视图内容适配为低20像素。问题是,如果我不设置增量,它会在模拟器中显示错误,但在设备上显示是正确的。我明白设置增量和使用 UINavigationController 等可能会有很多错误,但至少模拟器应该显示与设备相同的 UI ...
  • 看看我的回答也许会对你有所帮助:stackoverflow.com/questions/19226751/…
  • 不只是在这种情况下......模拟器和真实设备在许多其他情况下的行为也不同。
  • 当然是这样 - 但这是唯一一次 UI 完全不同步的模拟器和设备,并且仅适用于特定项目,而所有其他项目都没有这个问题.这显然是一些内部错误/损坏的设置...

标签: ipad ios7 ios-simulator uistoryboard xcode5


【解决方案1】:
    if( [self respondsToSelector:@selector(edgesForExtendedLayout)] ) {
  self.edgesForExtendedLayout = UIRectEdgeNone;
}

我确实将此修复应用于 viewControllers。在出现此错误的 ViewControllers 的每个 viewDidLoad 中。此外,您还必须取出您在 xib 或 Storyboard 中设置的 Delta。这个“修复”的最终结果将是......在模拟器和设备上,一切看起来都很好,而且准确无误。 (至少在我的情况下是这样)。让 xib 或故事板视图保持为“以 iOS 6.1 及更早版本查看”,这样它们看起来也不错,您仍然可以使用它们。此修复的唯一问题是:如果您使用助理编辑器并查看 xib 或情节提要在 iOS 7 下的外观,它看起来并不好......某些视图将是正确的。希望对您有所帮助。

【讨论】:

  • 好吧。我最终为这些设备做了正确的事情。无论如何,下一次更新将放弃对 iOS 6 的支持...
猜你喜欢
  • 2012-11-27
  • 2022-12-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-02
  • 2012-07-24
  • 2012-10-26
  • 1970-01-01
相关资源
最近更新 更多