skip to Main Content

I have tried this solution to get status bar height on iPhone 14 series with iOS 16 but getting wrong size. In app scene delegate is not used.

2

Answers


  1. Please try the below solution. Working for iPhone 14 Pro and iPhone 14 max Pro.

    if #available(iOS 13.0, *) {
                let window = UIApplication.shared.windows.first
                let topPadding = window?.safeAreaInsets.top
                let statusBar = UIView(frame: CGRect(x: 0, y: 0, width: UIScreen.main.bounds.size.width, height: topPadding ?? 0.0))
                statusBar.backgroundColor = UIColor(named: "AppPrimaryColor")
                UIApplication.shared.windows.filter {$0.isKeyWindow}.first?.addSubview(statusBar)
        }
    

    Hope this will solve your issue. Keep coding 🙂

    Login or Signup to reply.
  2. + (CGFloat)statusBarHeight {
        if ( @available(iOS 13.0, *)) {
            NSSet *set = [UIApplication sharedApplication].connectedScenes;
            UIWindowScene *windowScene = [set anyObject];
            UIStatusBarManager *statusBarManager = windowScene.statusBarManager;
            CGFloat statusBarHeight = statusBarManager.statusBarFrame.size.height;
            if( @available(iOS 16.0, *)) {
                BOOL needAdjust = (statusBarHeight == 44);
                if(windowScene.windows.firstObject.safeAreaInsets.top == 59 && needAdjust) {
                    statusBarHeight = 59;
                }
            }
            return statusBarHeight;
        }
        CGFloat statusBarHeight = [UIApplication sharedApplication].statusBarFrame.size.height;
        CGFloat safeAreaTop = UIApplication.sharedApplication.windows.firstObject.safeAreaInsets.top;
        return MAX(statusBarHeight, safeAreaTop);
    }
    
    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search