#define STATUS_H_F \
({\
CGFloat statusBarHeight = 0;\
if (@available(iOS 13.0, *)) {\
CGFloat topPadding = [UIApplication sharedApplication].windows.firstObject.safeAreaInsets.top;\
statusBarHeight = topPadding == 0 ? 20.0 : topPadding;\
} else {\
statusBarHeight = [UIApplication sharedApplication].statusBarFrame.size.height;\
}\
(statusBarHeight);\
}) //狀態(tài)欄高度
上述方法惕鼓,在web使用video標(biāo)簽全屏播放視頻后敢艰,獲取到[UIApplication sharedApplication].windows.firstObject.safeAreaInsets.top為0,導(dǎo)致自定義導(dǎo)航欄頁面上移锉罐,不明所以然昂儒。優(yōu)化后以下代碼更為科學(xué):
#define STATUS_H_F \
({\
CGFloat statusBarHeight = 0;\
if (@available(iOS 13.0, *)) {\
NSSet *set = [UIApplication sharedApplication].connectedScenes;\
UIWindowScene *windowScene = [set anyObject];\
UIStatusBarManager *statusBarManager = windowScene.statusBarManager;\
statusBarHeight = statusBarManager.statusBarFrame.size.height;\
} else {\
statusBarHeight = [UIApplication sharedApplication].statusBarFrame.size.height;\
}\
(statusBarHeight);\
}) //狀態(tài)欄高度