如何以编程方式获取 iOS 状态栏高度

2024-04-19

我知道目前 iPhone/iPad 顶部的状态栏(包含时间、电池和网络连接)对于非视网膜屏幕为 20 像素,对于视网膜屏幕为 40 像素,但为了未来证明我的应用程序,我希望无需硬编码值即可确定这一点。是否可以通过编程计算出状态栏的高度?


[UIApplication sharedApplication].statusBarFrame.size.height。但由于所有尺寸均以磅为单位,而不是像素,因此状态栏高度始终等于 20。

Update.看到这个答案被认为有帮助,我应该详细说明。

状态栏高度确实等于 20.0f 点except以下情况:

  • 状态栏已被隐藏setStatusBarHidden:withAnimation:方法,其高度等于0.0f点;
  • 正如 @Anton 这里指出的,在电话应用程序之外的来电期间或在录音会话期间状态栏高度等于 40.0f 点。

还有一种情况是状态栏会影响您的视图高度。通常,视图的高度等于给定方向的屏幕尺寸减去状态栏高度。但是,如果在显示视图后对状态栏进行动画处理(显示或隐藏它),状态栏将更改其框架,但视图will not,您必须在状态栏动画之后(或在动画期间,因为状态栏高度在动画开始时设置为最终值)手动调整视图大小。

更新2。还有一个用户界面方向的情况。状态栏不考虑方向值,因此状态栏高度值portrait模式是[UIApplication sharedApplication].statusBarFrame.size.height(是的,默认方向始终是纵向,无论您的应用程序 info.plist 说什么),景观 - [UIApplication sharedApplication].statusBarFrame.size.width。确定 UI 在外部时的当前方向UIViewController and self.interfaceOrientation不可用,请使用[UIApplication sharedApplication].statusBarOrientation.

iOS7 的更新。尽管状态栏的视觉样式发生了变化,但它仍然存在,其框架的行为仍然相同。我得到的关于状态栏的唯一有趣的发现 – 我分享:你的UINavigationBar's tiled背景也会平铺到状态栏,这样您就可以实现一些有趣的设计效果或只是为状态栏着色。这也不会以任何方式影响状态栏高度。

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

如何以编程方式获取 iOS 状态栏高度 的相关文章

  • 使用隐藏的 SFSafariViewController 获取 Safari cookie

    我正在阅读以下关于从移动网页到本机 iOS 9 应用程序对用户进行身份验证的文章 并且想知道如何最好地实现类似于下面讨论的隐藏控制器的隐藏 safari 视图控制器 https library launchkit io how ios 9
  • 更改 UITextField 辅助功能描述

    有没有办法将 UITextField 的辅助功能标签设置为 文本字段 之外的其他内容 因此 我不想将其称为 文本字段 而是将其命名为 代码验证字段 我的建议是不要试图在内置语音输出上智取系统 对于盲人用户来说 文本字段正在编辑 相当于 该项
  • 在 Swift 中检查一个数组是否包含另一个数组的所有元素

    我想为数组编写一个扩展来检查一个数组是否包含另一个数组的所有元素 在我的用例中它是字符串对象 但我一直得到 Cannot convert value of type T Generator Element to expected argum
  • 打印附加结构(swift 4)

    我有三个 textifled 用于将数据附加到结构中 如何打印我附加的内容 现在我收到一条错误消息 import UIKit class ViewController UIViewController IBOutlet var c UITe
  • 如何在 Xcode 4 中通过一个操作归档多个目标

    我有一个包含多个目标的项目 这些目标都适用于不同的 iOS 应用程序 例如 一个用于精简版的目标 另一个用于专业版的目标 我想立即构建并归档我的所有应用程序 目前 我对每个目标都有一个方案 我用它来独立归档每个应用程序 但现在我必须开始归档
  • Swift 中 UIImages 的淡入淡出动画

    我有一组图像 我希望它们在登录屏幕的背景中淡出 我无法在 swift 中找到任何可以做到这一点的东西 有什么办法我可以做到吗 这是我当前的代码 override func viewDidLoad super viewDidLoad star
  • iOS 对 Google 云消息传递的支持

    我在谷歌的开发者控制台中看到 GCM 允许为 iOS 生成 API 密钥 我在网上搜索了有关如何在 iOS 应用程序中通过 GCM 实现推送通知的任何类型的文档 但没有找到答案 真的有可能在 iOS 应用程序中使用 GCM 实现推送通知 j
  • 下标:使用字符串枚举访问我的字典值

    我想做类似的事情 使用字符串枚举访问我的字典值 我试图重载字典的下标但没有成功 访问字典 let district address JsonKeys district 其中 JsonKeys 是 enum JsonKeys String c
  • 通用类不会将委托调用转发给具体子类

    鉴于以下情况 protocol EntityType var displayString String get extension String EntityType var displayString String return self
  • Xcode MyProjectName-Bridging-Header.h 不存在

    我想开始在我的 Objective C 项目中使用 Swift 所以我添加了一个快速类 import Foundation objc class System NSObject objc func printSome println Pri
  • XCode 调试 - 我可以绕过反汇编代码的单步执行吗

    调试项目时 在 XCode 中设置断点后 我将开始单步执行代码 然后我会遇到反汇编代码 我认为这些代码是对没有可用源代码的各种框架的调用 这是一个正确的假设吗 有没有一种方法 可能通过我尚未找到的项目设置 来抑制此汇编代码的显示 而不必单步
  • 访问iOS 7隐藏的UITableViewCellScrollView?

    苹果改变了UITableViewCelliOS 7 中的层次结构 使用iOS 6 1 SDK
  • Firebase Messaging FCM 在可配置的时间间隔内分发

    当您使用 FCM 向给定应用程序的所有设备发送推送时 这可能会导致许多用户同时打开他们的应用程序 从而导致大量服务器轮询 从而导致负载峰值 有没有一种方便的方法可以在给定的时间间隔内分发消息以进行计划推送 最后 我们找到了一种可能的方法 通
  • 防止 UITableView 滚动到某个点以下

    如何让 UITableView 允许在某个索引行上方滚动 但在低于某个点时阻止滚动 例如 如果我有第 1 行到第 100 行 其中在给定时间视图中仅出现 5 行 我希望允许用户在第 1 50 行之间滚动 但在第 50 行可见时阻止进一步向下
  • 实时获取 Apple Watch heartRateVariabilitySDNN 吗?

    我正在使用下面的函数来获取 heartRateVariabilitySDNN 但它只获取一次并且不能像 heartbeat 那样实时计算 func HRVstart guard let quantityType HKObjectType q
  • NSPredicate 使用 RLMResults 作为参数

    我试图通过使用 NSPredicate 进行过滤来获取两组 Realm 数据 并且是不同的对象 之间的差异 但存在一个我无法理解的错误 我的代码 RLMResults topStories KFXTopStory allObjects NS
  • 如何相对于包含视图大小定位子视图?

    我希望能够将我的子视图从顶部定位到超级视图大小的 25 NSLayoutConstraint topPositionConstraint NSLayoutConstraint constraintWithItem containerView
  • Flutter - 删除 ListView 中项目之间的空间

    我正在使用 ListView builder 函数来创建项目列表 然而 iOS 中每个项目之间的空间很大 截图 你知道如何删除项目吗 看来是默认的 因为我没有添加它 code 列表显示 return Scaffold body ListVi
  • 如何在 iOS 5 中使用 Embed Segue?

    iOS 6 引入了 Embed Segue 允许在 Storyboard 中使用自定义容器控制器 有没有办法在 iOS 5 上复制这个 这里的挑战是子视图控制器的视图通常要添加为父视图控制器的某些容器视图的子视图 因为你不能随机进行序列UI
  • iOS SWIFT - WebRTC 从前置摄像头更改为后置摄像头

    WebRTC 视频默认使用前置摄像头 效果很好 但是 我需要将其切换到后置摄像头 但我无法找到任何代码来执行此操作 我需要编辑哪一部分 是 localView 或 localVideoTrack 还是捕获器 斯威夫特3 0 对等连接只能有一

随机推荐

  • Common Lisp 鼠标位置与 ltk

    我正在 Common Lisp 中制作一个简单的小程序 我想使用鼠标移动来控制它 我用 LTK 作为窗口 我找不到任何可以检索鼠标位置的函数 例如 Emacs Lisp 有 鼠标像素位置 我发现这在罗塞塔代码上 https rosettac
  • 为 WebRTC 应用程序实现我们自己的 STUN/TURN 服务器 [重复]

    这个问题在这里已经有答案了 我正在开发一个 webrtc 应用程序 并且必须实现以下 TURN 服务器 https code google com p rfc5766 turn server https code google com p
  • R 中的旋转轴标签

    如何使 条形 图的 y 轴标签平行于 X 轴而不是平行于 Y 轴 不确定这是否是您的意思 但尝试设置las 1 这是一个例子 require grDevices tN lt table Ni lt stats rpois 100 lambd
  • php中比较字符串的方法

    我想比较两个字符串并返回比较级别 字符串 1 是输入 可以采用来自客户端的多种格式 例如 string 1 GCSE English Lang Year 10 or string 1 Year 10 Eng Lang GCSE etc 字符
  • 如何在 VB.NET 中调用异步 Web 请求?

    我目前正在使用以下代码来创建网络请求 Dim myRequest As WebRequest WebRequest Create http foo com bar Dim myResponse As WebResponse myReques
  • 在 iOS 中加载/保存设置

    我在 AppDelegate 中定义了以下两个过程 保存设置和加载设置 单击保存按钮后 我将在 AppDidFinishLaunching 方法中调用 loadSettings 过程 并在设置视图中调用 saveSettings 过程 这两
  • 从外部源填充运行时天蓝色管道参数

    我们希望创建一个管道来更新我们的多租户 Azure 环境 我们需要在每个租户的更新过程中执行一些操作 为了实现这一目标 我们希望为每个租户创建一个作业 以便我们可以并行处理租户 为了实现此目的 我想使用运行时参数来传递租户以更新到我的管道
  • OSX 中的 python 地穴

    我有一个 Django 应用程序 它可以重置 Ubuntu 机器上运行的 unix 用户密码 但我的开发环境是 OS X 我遇到了这种恼人的情况 OS X gt gt gt import crypt gt gt gt crypt crypt
  • C/C++:如何将数据存储在B树中的文件中

    在我看来 将数据作为文件存储在 B 树中的一种方法可以使用 C 语言使用具有结构序列 数组 的二进制文件来有效完成 每个结构代表一个节点 因此 我们可以使用类似于使用数组创建链表的方法来连接各个节点 但随之而来的问题是删除节点 因为在一个大
  • “RPC 服务器不可用。”循环遍历Word文档时

    我正在开发一个实用程序来查找和更新 Word 中的 DOC 变量 我有一段代码可以循环遍历文档并显示带有变量名称的消息框 但是当它尝试打开下一个文档时收到错误 错误是 System Runtime InteropServices COMEx
  • 加入日历表 - 5 个工作日

    所以这是这里的一个常见问题 但我还没有找到真正适合我的特定需求的答案 我有 2 张桌子 其中有一个 ProjectClosedDates 列表 另一个表是一个类似于 2025 年的日历表 其中包含表示行日期是否为周末的列 以及另一列表示假日
  • php 中的 SVG 到 PNG 图像转换

    我想将 SVG 图像转换为具有透明背景的 PNG 文件 我使用下面的代码在 php 中使用 imagick 对其进行转换 但它给出了黑色背景的图像 image new imagick set transparent background i
  • 在 O(n) 中获取作为唯一给定索引的函数的排列

    我想要一个函数get permutation给定一个列表l和一个索引i 返回一个排列l这样排列对于所有人来说都是唯一的i大于0并低于n where n len l I e get permutation l i get permutatio
  • 如何在 OpenCV 中绘制图像的 3D 直方图

    更新 我找到更多例子 我现在可以做到 我可以在 3d 中绘制多个直方图吗 https stackoverflow com questions 35210337 can i plot several histograms in 3d 我知道这
  • 标准化浮点数 f 之后(之前)的下一个标准化浮点数是什么?

    给定一个标准化浮点数 f 下一个是什么归一化f 之后 之前的浮点数 通过一些调整 提取尾数和指数 我有 next normalized double if mantissa is not all ones maximally denorma
  • 如何快速过滤 Realm 中为当前日期创建的事件?

    如何快速过滤 Realm 中为当前日期创建的事件 我尝试了类似下面的方法 但是这是错误的 let dtSource datasource filter Create NSDate count Update 获取将我的日期创建为字符串的过滤器
  • Python json内存膨胀

    import json import time from itertools import count def keygen size for i in count 1 s str i yield 0 size len s str s de
  • 设置子视图以适合系统窗口

    我正在设置一个简单的视图 其中仅包含一个空的RelativeLayout
  • 如何启动第二个 Java 进程?

    如何启动第二个独立于平台的 Java 进程 理想情况下 它应该与当前运行的 Java 版本相同 有什么有用的系统属性吗 您可以使用java home系统属性来查找当前的 JVM String jvm new java io File new
  • 如何以编程方式获取 iOS 状态栏高度

    我知道目前 iPhone iPad 顶部的状态栏 包含时间 电池和网络连接 对于非视网膜屏幕为 20 像素 对于视网膜屏幕为 40 像素 但为了未来证明我的应用程序 我希望无需硬编码值即可确定这一点 是否可以通过编程计算出状态栏的高度 UI