Storyboard 应用程序在 iOS 7 上运行正常,但在 iOS 6.1 上导航栏切换视图

Posted

技术标签:

【中文标题】Storyboard 应用程序在 iOS 7 上运行正常,但在 iOS 6.1 上导航栏切换视图【英文标题】:Storyboard app run on iOS 7 OK but Navbar shift view on iOS 6.1 【发布时间】:2013-09-15 23:14:13 【问题描述】:

在使用昨天发布的新 Xcode 5 重建我的项目时,我很失望地看到我的情节提要视图控制器动摇了。

经过多次尝试解决问题后,我必须得出结论,我遇到了一个遗留问题:导航视图控制器使导航栏与视图内容重叠。这样做,该应用在 ios 7 设备上可以正常运行(没有重叠),但在 iOS 6.1 设备上,导航栏会重叠。

我从 FlatUI 运行了一个示例项目来交叉检查问题,他们也有同样的问题。请问有什么办法吗?

【问题讨论】:

实际上答案是 IB 中的 Extends Edges 标志:只需取消选中 Under Top Bar 标志,就完成了。 Stephane de Luca:我也面临同样的问题,你指的是哪个标志? 他的意思是在视图控制器的属性检查器中,扩展边缘。有下顶栏、下底栏、不透明栏下的选项。 【参考方案1】:

由于坐标系,您遇到了问题,iOS 6 和 iOS 7 的坐标系不同 iOS 7 默认使用translucent properties

尝试将此代码放入viewDidLoad

if (floor(NSFoundationVersionNumber) > NSFoundationVersionNumber_iOS_6_1)

     self.edgesForExtendedLayout=NO;

【讨论】:

【参考方案2】:

我认为这是因为 iOS 6 和 iOS 7 的坐标系统

请检查以下两张图片。

iOS 6:

iOS 7:

【讨论】:

如何解决这个问题?我也面临同样的问题,我的观点在 iOS 7 中向上移动 要解决这个问题,你必须手动检查 if(iOS7) view.frame = CGRectmake(view.frame.origin.x,view.frame.origin.y,view.frame.size .width,view.frame.size.height + 状态栏高度 + anyBar 你已经加了高度); anyBar 将替换为以下 Navigation bar = 44 pts Tab bar = 49 您应该在框架中添加此值,如果两者都使用则添加两个值 我在.xib做了设计我应该如何改变框架? 可能我想没有办法使用 xib 来做到这一点。【参考方案3】:

正如我在评论中所说:在 IB(界面构建器)中,您需要转到视图控制器的“属性检查器”,并查看“扩展边缘”属性:只需取消选中“顶部栏下方”标记,你就完成了。

【讨论】:

【参考方案4】:

在界面生成器中,在尺寸检查器选项卡中,有一个名为 iOS 6/7 Delta 的部分,您可以在其中修复导航栏问题或某些控件在 ios7 中的大小与在 ios6 中不同的情况。

【讨论】:

【参考方案5】:

你必须做两件事:-

一个。在情节提要中选择特定的 xib 或视图,并在右窗格中查看扩展边缘选项 unlcik 第一个选项。 现在这将完全改变你的看法。

b. 此视图中的所有内容也将移动到下方,因为您必须为 ios7 设置增量因子 -(x 像素),为 ios6 设置 +(像素)。 对于设置 6 和 7,您必须在 xib 的右窗格中选择“查看为”选项。

快乐编码

【讨论】:

以上是关于Storyboard 应用程序在 iOS 7 上运行正常,但在 iOS 6.1 上导航栏切换视图的主要内容,如果未能解决你的问题,请参考以下文章

Xcode 5 iOS 7 Simulator 没有加载 Storyboard 让我抓狂! (没有本地化)

在 iOS 7 Storyboard 中用 UITabBarController 替换 UIViewController

iOS 7 的 UISplitViewController“在 Storyboard 中找不到 ViewIdentifier”错误

iOS 7 中 StoryBoard 总体缩放

点击文本字段时用选择器视图替换键盘(Swift、Storyboard、iOS 9、Xcode 7)

Swift 和 TestFlight 适用于 iOS 8 但不适用于 iOS 7