在 iOS 7 中,状态栏和导航栏出现在我的视图边界上方

2023-12-25

我最近下载了Xcode http://en.wikipedia.org/wiki/Xcode5 DP 在 iOS 7 中测试我的应用程序。我注意到并确认的第一件事是我的视图边界并不总是调整大小以适应状态栏和导航栏。

In viewDidLayoutSubviews,我打印视图的边界:

{{0, 0}, {320, 568}}

这导致我的内容出现在导航栏和状态栏下方。

我知道我可以通过获取主屏幕的高度,减去状态栏的高度和导航栏的高度来计算自己的高度,但这似乎是不必要的额外工作。

我该如何解决这个问题?

Update:

我找到了解决这个特定问题的方法。将导航栏的半透明属性设置为NO:

self.navigationController.navigationBar.translucent = NO;

这将修复导航栏和状态栏下方的视图。

但是,当您希望导航栏半透明时,我还没有找到解决方案。例如,全屏查看照片时,我希望导航栏半透明,并且视图位于其下方。这可行,但是当我切换显示/隐藏导航栏时,我遇到了更奇怪的结果。第一个子视图(UIScrollView)每次都会更改其边界 y 原点。


您可以通过实现一个名为的新属性来实现这一点edgesForExtendedLayout在iOS7 SDK中。请添加以下代码来实现此目的,

if ([self respondsToSelector:@selector(edgesForExtendedLayout)])
        self.edgesForExtendedLayout = UIRectEdgeNone;

您需要将以上内容添加到您的-(void)viewDidLoad method.

iOS 7 对布局和自定义方式带来了一些变化 你的外表UI。视图控制器布局、色调的变化 颜色和字体影响所有UIKit您的应用程序中的对象。在 此外,手势识别器 API 的增强功能让您可以更好地识别手势 对手势交互的精细控制。

使用视图控制器

在 iOS 7 中,视图控制器使用全屏布局。同时, iOS 7 使您可以更精细地控制视图控制器的方式 阐述其观点。特别是全屏布局的概念 已经过改进,让视图控制器指定每个视图的布局 其视野的边缘。

The wantsFullScreenLayout视图控制器属性已弃用 iOS 7。如果您当前指定wantsFullScreenLayout = NO, 风景 控制器可能会在意外的屏幕位置显示其内容 当它在 iOS 7 中运行时。

要调整视图控制器如何布局其视图,UIViewController提供以下属性:

  • 扩展布局的边缘

The edgesForExtendedLayout属性使用UIRectEdge类型, 除了指定矩形的四个边之外,它还指定了每个边 指定无和全部。使用edgesForExtendedLayout指定哪个 无论条形半透明度如何,视图的边缘都应该延伸。经过 默认情况下,该属性的值为UIRectEdgeAll.

  • 扩展布局包括不透明条

如果您的设计使用不透明条,请改进edgesForExtendedLayout经过 还设置extendedLayoutIncludesOpaqueBars财产给NO。 (默认值为extendedLayoutIncludesOpaqueBars is NO.)

  • 自动调整ScrollViewInsets

如果您不希望滚动视图的内容插入自动 调整、设定automaticallyAdjustsScrollViewInsets to NO。 (这 默认值automaticallyAdjustsScrollViewInsets is YES.)

  • 顶部布局指南、底部布局指南

The topLayoutGuide and bottomLayoutGuide属性表明 视图控制器视图中顶部或底部栏边缘的位置。 如果条形图应与视图的顶部或底部重叠,您可以使用 Interface Builder 通过创建相对于栏定位视图 底部的约束topLayoutGuide或到顶部 底部布局指南。 (如果没有条形图与视图重叠,则topLayoutGuide与视图的顶部和bottomLayoutGuide与视图底部相同。)两者 属性是根据请求延迟创建的。

请参考,苹果文档 https://developer.apple.com/library/prerelease/ios/documentation/UserExperience/Conceptual/TransitionGuide/AppearanceCustomization.html#//apple_ref/doc/uid/TP40013174-CH15-SW1

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 iOS 7 中,状态栏和导航栏出现在我的视图边界上方 的相关文章

  • 多对多关系中的 KVO 对象属性

    我有一个核心数据对多关系 由父 gt 子组成 我想设置一个键值观察机制 以便当任何子对象上的属性 例如 firstName lastName 发生更改时 它会触发通知 使用标准 KVO 语法时 self parentObject addOb
  • 从服务器实时更新的 iOS 应用程序:Socket(使用流)还是 Apple 推送通知服务?

    我正在尝试制作一个 iOS 5 应用程序 该应用程序具有来自服务器的实时信息 它只会在应用程序运行时使用这些 为了使其实时且无需轮询 我一直在评估两种设计路线 创建从应用程序到服务器的套接字 并通过流交换信息 Pros 相对简单 不涉及第三
  • 如何使用 Swift 关闭打开的文件?

    我正在下载约 1300 张图像 这些是小图像 总大小约为 500KB 但是 下载并将它们放入 userDefault 后 我 收到如下错误 libsystem network dylib nw route get ifindex 套接字 P
  • iOS:如何使用 CGLayer 支持 Retina 显示屏?

    我正在 CALayer 的委托方法中绘制图表drawLayer inContext 现在我想支持 Retina Display 因为图形在最新设备上看起来很模糊 对于直接在 CALayer 传递的图形上下文上绘制的部分 我可以通过如下设置
  • 记录使用 OpenAL 播放的样本

    我在 iOS 上使用 OpenAL 同时播放 9 个循环 为了使循环 100 同步 它们开始在不同的线程上运行 有关使用 OpenAL 记录正在播放的内容的任何指示 教程 如果我使用不同的线程 我会遇到录制问题吗 iOS 上的 OpenAL
  • 在 iOS safari 中禁用选择上下文菜单

    我想禁用在 iOS Safari 网络浏览器 中选择特定文本后出现的默认上下文菜单 那可能吗 这是可能的 请参阅这个例子 http jsfiddle net z9ZNU 基本上 重要的部分是设置正确的 css 属性 body webkit
  • 如何在 iOS 上的视图之间进行展开/收缩转换?

    我正在尝试在 iOS 中制作过渡动画 其中视图或视图控制器似乎扩展以填充整个屏幕 然后在完成后收缩回原来的位置 我不确定这种类型的转换的正式名称是什么 但您可以在 iPad 版 YouTube 应用中查看示例 当您点击网格上的搜索结果缩略图
  • 从 Google/Facebook 帐户重新验证用户身份

    因此 我需要创建一个 REST API 来为 IOS 应用程序提供功能 我们允许用户仅使用普通帐户或使用脸书 谷歌登录 我最近一直在阅读 OAuth 我想我了解在我的情况下如何使用 OAuth 的过程 当用户使用脸书 谷歌登录 在我的应用程
  • 在 Alamofire 中快速发送 GET 请求中的 json 对象

    我正在尝试执行一个绑定了 json 对象的 GET 请求 这就是我生成 JSON 对象的方式 let jsonObject String AnyObject ean code type match value 16743799 然后我执行了
  • iOS 新手。预期的表达错误?

    这看起来很不寻常 因为该方法与我的 showAnswer 方法完全相同 所以我想我应该在这里问 import QuizViewController h interface QuizViewController end implementat
  • 让约束在尺寸类别中发挥作用

    所以 我正在 Xcode 6 beta 中尝试尺寸类 我对图像设置了一些限制 使其根据 iPhone 纵向和横向对应的尺寸类别处于不同的位置 这些限制在下图中可见 正如您所看到的 当我处于紧凑 紧凑状态时 一些约束被 安装 而其他约束则没有
  • 当 iPhone 设备方向朝上/朝下时,我可以判断它是横向还是纵向吗?

    我得到这个代码 如果设备处于左 右横向或上下颠倒状态 它会旋转并显示另一个视图控制器 但如果它的方向朝上或朝下 那么我如何判断它是横向模式还是纵向模式 因为我只想在它面朝上或朝下以及横向模式下旋转 void viewDidAppear BO
  • 我可以使用 NSDateFormatter 将此日期字符串转换为 NSDate 吗?

    我有这个字符串 2010 08 24T16 00 00 05 00 我想从中提取时间部分 即 16 00 并将其转换为 12 小时等效值 即下午 04 00 我正在尝试使用 NSDateFormatter 来完成此任务 但它不起作用 NSD
  • Swift NotificationCenter 删除观察者最快的方法

    我正在添加一些观察员viewController applicationWillResignActive applicationDidEnterBackground 以及许多其他人 我想删除self作为一行中所有已注册通知的观察者 我的问题
  • 在 iPhone 和 Cocos2d 中从类类型(+)方法访问对象?

    我有一个类方法 在其中创建并返回类对象 但我想访问同一类中该对象的某些属性 作为一个类方法 我无法在 h 文件中声明该变量 然后在其他方法中访问它 以下是代码 我如何在下面的实例方法中访问 backsprite 或 hudlayer 对象的
  • 使用 iOS 设备作为 TCP 客户端 - 无 Bonjour

    我想使用 iOS 设备作为 TCP 客户端 但我找不到可理解的 API 指南 示例来说明如何做到这一点 我试过SimpleNetworkStreams and PictureSharing 但他们都使用 Bonjour 我可以轻松建立 UD
  • iPhone / iPad IOS 应用程序仪器内存计数与 task_info 内存计数

    我一直在使用 Instruments Leak Tester 它给出了大约 1 3 meg 的应用程序总分配数字 但是 当使用 task info 时 它会报告更大的内存量 例如 10 20 meg 我想我只是想确认task info正在返
  • SDWebImage 显示缓存中图像的占位符

    在 iOS 5 1 项目 iPad 中使用 SDWebImage 3 我们展示相当大的图像 700x500 并且我们有很多图像 1000 我们预取图像并缓存到磁盘 然后允许用户浏览它们 效果很好 除了当您浏览图像时 您总是会看到占位符显示一
  • iOS:addConstraints:应用程序崩溃

    Problem 我似乎无法在现有项目中采用自动布局 Details 我之前也遇到过与此问题相同的问题presentViewController 在 iOS 但所提供的答案都不是我的解决方案 我正在使用所有没有 xib 的故事板视图 我的 使
  • Swift 3 和 Xcode8 - init 的使用不明确

    在我安装 Xcode 8 并将项目转换为 Swift 3 之前 以下行没问题 现在转换后看起来像这样 let valueData Data Data bytes UnsafePointer

随机推荐