navigation bar under status bar after video playback in landscape mode

前端 未结 4 1750
无人及你
无人及你 2020-12-24 06:58

The problem:

Navigation bar is under status bar after playing video in landscape mode.

The application:

  • iOS9 only.
  • only supports portr
4条回答
  •  野趣味
    野趣味 (楼主)
    2020-12-24 07:35

    @Aaron answer almost works, there's only one problem: when you tap "done" in the video, while still holding the device in landscape orientation, it won't show status bar until you'll rotate your device back into portrait.

    In that case, I've added notification observer when "done" button is tapped and then I switch to portrait programmatically.

    My code is in Objective C:

    - (void)viewDidLoad {
        [super viewDidLoad];
    
        [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(videoDidRotate) name:UIDeviceOrientationDidChangeNotification object:nil];
    
        [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(closedFullScreen:) name:UIWindowDidBecomeHiddenNotification object:nil];
    }
    
    -(void)closedFullScreen:(NSNotification *)myNotification{
        [[UIDevice currentDevice] setValue:
         [NSNumber numberWithInteger: UIInterfaceOrientationPortrait]
                                        forKey:@"orientation"];
    }
    
    - (BOOL)prefersStatusBarHidden {
        return UIInterfaceOrientationIsLandscape([UIApplication sharedApplication].statusBarOrientation);
    }
    
    - (void)videoDidRotate {
        [self setNeedsStatusBarAppearanceUpdate];
    }
    

    EDIT:

    View controller-based status bar appearance in .plist file must be set to YES.

提交回复
热议问题