This commit is contained in:
2025-11-06 15:16:03 +08:00
parent a1db745b6c
commit 41aec6b89e
5 changed files with 93 additions and 3 deletions

View File

@@ -99,4 +99,34 @@ static inline CGFloat KB_StatusBarHeight(void) {
#define KB_IS_IPHONEX_SERIES (KB_SafeAreaBottom() > 0.0)
// --- 设备特性是否为带刘海机型iPhone X 及以后异形屏)---
// 说明:在 iPhone 12 等机型底部会有 34px 安全区,这里通过安全区来判断是否为“刘海屏”。
// 注意:使用到 UIKit这里自行引入避免依赖 PCH 的包含顺序。
#import <UIKit/UIKit.h>
static inline BOOL KBDeviceHasNotchRuntime(void) {
if (@available(iOS 11.0, *)) {
UIWindow *window = nil;
if (@available(iOS 13.0, *)) {
for (UIScene *scene in UIApplication.sharedApplication.connectedScenes) {
if (scene.activationState == UISceneActivationStateForegroundActive && [scene isKindOfClass:[UIWindowScene class]]) {
UIWindowScene *ws = (UIWindowScene *)scene;
for (UIWindow *w in ws.windows) { if (w.isKeyWindow) { window = w; break; } }
if (window) { break; }
}
}
if (!window) { window = UIApplication.sharedApplication.windows.firstObject; }
} else {
window = UIApplication.sharedApplication.keyWindow;
}
return window.safeAreaInsets.bottom > 0.0;
}
return NO;
}
#ifndef KB_DEVICE_HAS_NOTCH
#define KB_DEVICE_HAS_NOTCH (KBDeviceHasNotchRuntime())
#endif
#endif /* KeyBoardPrefixHeader_pch */