我的应用程序中有一个视图控制器,它在情节提要中拖动了一个导航栏.它在iOS 6中运行良好,但在iOS 7中看起来是这样的:

ios 7状态栏导航变量

状态栏和导航栏不应相互碰撞.我在堆栈溢出上看到了很多这样的问题,但它们对我没有太大帮助.

有些问题说我应该使用"self.edgesForExtendedLayout=UIRectEdgeNone但没用.有人说,我应该删除导航栏,并将其嵌入导航控制器中,但由于我的程序的实现方式,我无法做到这一点.一些解决方案建议使用视图边界,但它对我也不起作用.

有什么能帮我解决这个问题.提前谢谢!

UPDATE:我将视图控制器嵌入了一个uinavigation控制器中.删除了之前手动添加的导航栏.现在,它在情节提要中看起来不错,但当我运行它时,它显示了以下内容:

iOS 7导航状态栏

它正在显示来自另一个视图控制器的文本,该视图控制器当前位于其父视图控制器的后面.意味着它现在是透明的.有人能指出我做错了什么吗?

推荐答案

最新版本的iOS带来了许多视觉变化,从开发者的Angular 来看,导航和状态栏是两个值得注意的变化.

状态栏现在是透明的,它后面的导航栏可以显示出来.导航栏图像甚至可以扩展到状态栏后面.

首先,如果你是一名初学者,刚刚开始iOS开发,对状态栏和导航栏的工作方式感到困惑,你可以简单地浏览我发现非常有用的博客文章HERE.它拥有iOS 7中与导航和状态栏相关的所有信息.

现在来回答你的问题.首先,我可以看到两个不同的问题.一个是,你的状态栏和导航栏都有点相互冲突,就像你在问题中用图片显示的那样.

问题是,您之前在视图控制器中拖动了一个导航栏,该导航栏在iOS 6中正常工作,但随着iOS 7 SDK的到来,这种方法导致状态栏和导航栏相互重叠.

SOLUTION to First Problem:您可以使用UIBarPositionTopAttached,也可以使用视图边界和框架,我也可以建议您将其链接到Apple's documentation和bla bla bla bla bla,但这将需要一些时间来解决问题.

The best and the most easiest way to solve this issue is to just embed your view controller inside a navigation controller and thats it. You can do it by just selecting the view controller and going to Editor > Embed In > Navigation Controller. (If there is any content on your old navigation bar, you can first drag it down, embed the view controller in navigation controller and then move the bar buttons on the new navigation bar and then delete the old navigation bar)

SOLUTION to Second Problem:本解决方案针对您在更新中提到的具体问题,不适用于阅读本手册的普通公众.正如您所见,导航和状态栏不可见,一个透明区域显示父视图控制器.我真的不明白你为什么要面对这个问题,但很可能是因为一些第三方库,如ECSlidingView或任何其他涉及.您可以在故事板中 Select 此视图控制器,并将视图的背景色设置为与导航栏相同.这将停止显示后面的父视图控制器,导航栏和状态栏将开始显示.现在,您可以使用文本视图或您在其中使用的内容覆盖视图控制器的其余部分.

希望这有帮助!

Objective-c相关问答推荐

将 NSMutableAttributedString 转换为 NSString

Objective-C struct 的默认值以及如何测试

Objective c 判断文本字段是否为空

OCUnit 的单元测试示例

我需要在 ARC 中使用 dealloc 方法吗?

KVO - 如何判断对象是否是观察者?

在 iOS8 上,以横向模式显示我的应用程序会隐藏状态栏,但在 iOS 7 上,状态栏会同时显示在两个方向上

带有语法高亮的 UITextView

如何在 UICollectionView 中居中行?

NSInternalInconsistencyException: '无效参数不满足: !stayUp || CLClientIsBackgroundable(内部->fClient)'

Facebook 添加测试用户和管理员是:(待定),这是什么意思?

iOS 7 - viewDidLoad 和 viewDidAppear 之间的区别

无法加载从笔尖引用的图像

OSStatus 错误代码 -34018

Objective-C 中是否有一些文字字典或数组语法?

委托如何在 Objective-C 中工作?

如何确定 UICollectionView flowLayout 中单元格之间的间距

替换 URL 中出现的空格

状态栏文本 colored颜色 iOS 7

使用 Objective-C 发布多部分/表单数据