iOS 7.1 更新后 xibs 显示不正确

Posted

技术标签:

【中文标题】iOS 7.1 更新后 xibs 显示不正确【英文标题】:xibs displayed incorrectly after iOS 7.1 update 【发布时间】:2014-03-12 19:41:47 【问题描述】:

所以我们的应用程序是使用 XIB 接口构建的,而不是故事板。我们有适用于 iPhone 和 iPad 的 XIB。

自从 ios7.1 更新以来,iPhone xibs 现在在界面构建器中更大,部署在设备上时也太高了。

高度都错了,XIB现在太高了。例如,当设置为填充时,背景似乎超出了视图。当部署在手机上时,所有内容都会向下移动到顶部导航栏的高度。

如果我在 Interface Builder 中添加/删除视图的顶部/底部栏,事情会发生变化,但不会以一种有意义的方式发生变化。我的应用程序有一个导航栏,如果我告诉界面生成器它有一个导航栏,那么 xib 的高度会再增长 80 左右像素。如果我告诉界面构建器它没有导航栏,一切都会正常向上移动,但视图的高度仍然很高,以至于底部附近的背景和东西会离开屏幕。

所以对于非常模糊的问题,但我们正在努力解决这个问题。

更新 - 看起来不透明的导航栏解决了一半的问题。我们为每个界面设置了半透明导航栏。这些在 IOS7.1 中似乎不占用空间,但在 IOS7.0 中却占用了空间。

现在的问题仍然是身高。在内部,高度似乎仍然被破坏或从新的原点开始。

在 iPod Touch 上,在带有不透明导航栏的视图上加载了视图:

self.view.frame.origin.y 显示为 0

self.view.frame.size.height 显示为 256

导航栏 origin.y = 20

导航栏大小.高度 = 32

总共 308 个,缺少 12 个像素。

【问题讨论】:

这是一个猜测,但我今天在某处读到它!苹果所做的是,当您在界面上附加了一个导航控制器时,y 坐标的原点是原始坐标的 64 像素。即导航栏为 44 像素,状态栏为 20 像素。 一切工作正常,即使到 IOS7。到目前为止,界面构建器中的半透明导航栏似乎以前占用了空间,但现在它们没有(这实际上是有道理的)。因此,在界面生成器中切换到不透明导航栏修复了一半的高度问题。然而,视野仍然很高。界面生成器中视图底部的小部件约束显示距离设备底部约 20 像素。我有一个界面,它只是一个 UIWebView,它占据了整个 View,一旦部署,底部有一个 20px 的条带。 【参考方案1】:

在 IB 中或以编程方式创建自动布局约束,将每个 XIB 文件中的主视图顶部与“顶部布局指南”对齐,将视图底部与“底部布局指南”对齐。这解决了在我的几个应用中从 iOS 6 迁移到 iOS 7 时非常相似的问题。

【讨论】:

这不起作用。 UI 的界面构建器看起来不错。部署后,所有内容都会向上移动 20 像素,在每个视图的底部留下一条似乎无法填充的条带。即使是设置为占用整个 View 的 UIWebView 在底部也被截断。

以上是关于iOS 7.1 更新后 xibs 显示不正确的主要内容,如果未能解决你的问题,请参考以下文章

Xcode 更新到 7.2 但仍然只显示 7.1

iOS - 是不是可以使用更新的 xib 从互联网下载捆绑包?

来自 xib 的 UIControl 在 ios 7.1 上崩溃

XCode 5 ImageView 在 ios 6 中消失

iOS 版本更新摘要iOS 7.1

iOS 8 GM 不更新集合视图的约束