Skip to content

崩溃YBIBStatusbarHeight 和YBIBSafeAreaBottomHeight #365

Description

@myhubname

CGFloat YBIBSafeAreaBottomHeight(void) {
CGFloat bottom = 0;
if (@available(iOS 11.0, *)) {
UIWindow *keyWindow = nil;
// 优先从 connectedScenes 获取 keyWindow(iOS 13+)
if (@available(iOS 13.0, *)) {
for (UIScene *scene in UIApplication.sharedApplication.connectedScenes) {
if (scene.activationState == UISceneActivationStateForegroundActive && [scene isKindOfClass:UIWindowScene.class]) {
UIWindowScene *windowScene = (UIWindowScene *)scene;
for (UIWindow *window in windowScene.windows) {
if (window.isKeyWindow) {
keyWindow = window;
break;
}
}
if (keyWindow) break;
}
}
} else {
// iOS 11 ~ 12 使用 keyWindow
keyWindow = UIApplication.sharedApplication.keyWindow;
}
bottom = keyWindow.safeAreaInsets.bottom;
}
return bottom;
}

CGFloat YBIBStatusbarHeight(void) {

CGFloat height = UIApplication.sharedApplication.statusBarFrame.size.height;

if (height <= 0) {
    // iOS 11+ 尝试从 keyWindow 获取 safeAreaInsets.top
    if (@available(iOS 11.0, *)) {
        UIWindow *keyWindow = nil;
        // 优先从 connectedScenes 获取 keyWindow(iOS 13+)
        if (@available(iOS 13.0, *)) {
            for (UIScene *scene in UIApplication.sharedApplication.connectedScenes) {
                if (scene.activationState == UISceneActivationStateForegroundActive && [scene isKindOfClass:UIWindowScene.class]) {
                    UIWindowScene *windowScene = (UIWindowScene *)scene;
                    for (UIWindow *window in windowScene.windows) {
                        if (window.isKeyWindow) {
                            keyWindow = window;
                            break;
                        }
                    }
                    if (keyWindow) break;
                }
            }
        } else {
            // iOS 11 ~ 12 使用 keyWindow
            keyWindow = UIApplication.sharedApplication.keyWindow;
        }
        height = keyWindow.safeAreaInsets.top;
    }
}

// 最终 fallback
if (height <= 0) {
    height = 20;
}
return height;

}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions