要得到的iOS应用程序的状态栏的height
,我们做了解幻数隐藏在状态
let height = UIApplication.shared.statusBarFrame.height
print(height)
,这将返回在正常情况下20.0
。
如果状态栏由于通话中或个人热点条件而具有扩展,则返回40.0
。
现在让我们说,我们有一个NavigationController
与UICollectionView
内置。我们试图找出收集视图中contentOffset
指向的位置。
let contentOffset = self.collectionView!.contentOffset
let statusBarHeight = UIApplication.shared.statusBarFrame.height
与正常状态栏,结果是:
contentOffset:(0.0,-64.0)
statusBarHeight:20.0
含义是,NavigationBar
的高度是64.0
。
利用扩展状态栏:
contentOffset:(0.0,-64.0)
statusBarHeight:40.0
通知的contentOffset仍然(0.0, -64.0)
但不(0.0, -84.0)
。这意味着扩展状态栏后面有无法访问的空间。我相信我们无法弄清楚这个无法到达的空间的实际尺寸。
我们只能猜测它是20.0
,因为我们在实践中已经知道这个数字。
所以我们说,我们要吸取正确的状态栏下面的美景。但使用statusBarHeight
给出的信息,我们不能这样做,因为整个视图会缩小它的高度神奇的 20px我们不知道。
如果我们想放置框架(0, statusBarHeight, 100, 100)
的视图,如果状态栏处于正常状态,这将置于状态栏的正下方。但是如果状态栏有扩展了,这将失败,因为现在statusBarHeight
是40
。
现在,我们必须添加幻数象下面这样:
myView.frame = CGRect(x: 0, y: statusBarHeight - 20, width: 100, height: 100)
所以我的问题是:
我们如何计算这个神奇的数字?
约'when'这一变化发生是这些方法会给你的信息,并高度将如果展开,则为'40.0'。但是我想知道整个视图在它的高度上缩减了多少,而不是40.0,它是20.0。 – sCha
你测试过任何状态栏20,但没有打印。例如录音或其他任何东西。更多检查这一个https://stackoverflow.com/questions/3888517/get-iphone-status-bar-height?rq=1 –