Ios 为什么UIApplicationIDChangeStatusBarFrame';当iphone热点打开时,用户信息不正确?
我在视图控制器中添加了下拉菜单。当它出现时,我把它放在我的超级视图前面。如果我打开hotspot,iphone的状态栏将加倍高,我应该更改下拉菜单的原点,因此我添加了通知以观察Ios 为什么UIApplicationIDChangeStatusBarFrame';当iphone热点打开时,用户信息不正确?,ios,sdk,notifications,uikit,Ios,Sdk,Notifications,Uikit,我在视图控制器中添加了下拉菜单。当它出现时,我把它放在我的超级视图前面。如果我打开hotspot,iphone的状态栏将加倍高,我应该更改下拉菜单的原点,因此我添加了通知以观察UIApplicationIDChangeStatusBarFrame和UIApplicationWillChangeStatusBarFrame 如果我改变屏幕方向,它将为我提供如下正确的用户信息: ***WILL CHANGE STATUS BAR*** StatusBar size: (0.0, 0.0, 736.0
UIApplicationIDChangeStatusBarFrame
和UIApplicationWillChangeStatusBarFrame
如果我改变屏幕方向,它将为我提供如下正确的用户信息:
***WILL CHANGE STATUS BAR***
StatusBar size: (0.0, 0.0, 736.0, 20.0)
***WILL CHANGE STATUS BAR***
StatusBar size: (0.0, 0.0, 736.0, 20.0)
***DID CHANGE STATUS BAR***
StatusBar size: (0.0, 0.0, 414.0, 20.0)
REAL Statusbar height: 20.0
***DID CHANGE STATUS BAR***
StatusBar size: (0.0, 0.0, 0.0, 0.0)
REAL Statusbar height: 0.0
使用的功能:
func didChangeStatusBar(_ notification: Notification) {
print("***DID CHANGE STATUS BAR***")
let infoDict = notification.userInfo as! [String: Any]
let statusBarSize = (infoDict[UIApplicationStatusBarFrameUserInfoKey] as! NSValue).cgRectValue
print("StatusBar size: \(statusBarSize)")
print("REAL Statusbar height: \(UIApplication.shared.statusBarFrame.height)")
let realHeight = UIApplication.shared.statusBarFrame.height
}
func willChangeStatusBar(_ notification: Notification) {
print("***WILL CHANGE STATUS BAR***")
let infoDict = notification.userInfo as! [String: Any]
let statusBarSize = (infoDict[UIApplicationStatusBarFrameUserInfoKey] as! NSValue).cgRectValue
print("StatusBar size: \(statusBarSize)")
}
我也不知道为什么叫两次。
现在我打开iphone上的hotspot并使用另一个hotspot进行连接,状态栏的高度将翻倍。输出为:
***WILL CHANGE STATUS BAR***
StatusBar size: (0.0, 0.0, 414.0, 40.0)
***DID CHANGE STATUS BAR***
StatusBar size: (0.0, 0.0, 414.0, 20.0)
REAL Statusbar height: 40.0
你们看到了吗,那个用户信息给我们的状态栏高度值等于20,但实际高度是40。所以我不能依靠这个值来安排我的观点。是虫子还是我误解了什么