要得到的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 –