首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >横屏模式视频播放后状态栏下的导航栏

横屏模式视频播放后状态栏下的导航栏
EN

Stack Overflow用户
提问于 2016-03-05 03:38:35
回答 4查看 5.9K关注 0票数 27

问题是:

在横向模式下播放视频后,导航栏位于状态栏下。

应用程序:

仅限

  • iOS9。
  • 仅支持纵向模式。
  • 视图控制器上有web视图,web视图将打开youtube链接
  • 视图控制器嵌入导航控制器

要复制的设置:

  1. 在横屏中播放视频,
  2. 将设备放入横屏mode.
  3. Dismiss视频在横屏模式下播放,应用程序返回到纵向mode
  4. Navigation栏处于错误的位置

截图:

当应用程序打开

  1. 播放视频并将设备放入横向

  1. The problem:

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2016-11-04 05:48:25

Swift 3

在呈现视图控制器中,覆盖prefersStatusBarHidden属性,以便仅在状态栏处于横向时才隐藏它。

代码语言:javascript
复制
override var prefersStatusBarHidden: Bool {
    return UIApplication.shared.statusBarOrientation.isLandscape
}

然后添加设备何时旋转的观察者。

代码语言:javascript
复制
override func viewDidLoad() {
    super.viewDidLoad()

    NotificationCenter.default.addObserver(self, selector: #selector(videoDidRotate), name: .UIDeviceOrientationDidChange, object: nil)
}

在观察者的方法中,调用setNeedsStatusBarAppearanceUpdate

代码语言:javascript
复制
func videoDidRotate() {
    self.setNeedsStatusBarAppearanceUpdate()
}

这应该就行了。

票数 23
EN

Stack Overflow用户

发布于 2017-11-30 19:54:36

这很简单,

swift 3

代码语言:javascript
复制
override func viewWillLayoutSubviews() {
   super.viewWillLayoutSubviews();
   UIApplication.shared.isStatusBarHidden = false
}
票数 11
EN

Stack Overflow用户

发布于 2017-08-04 20:14:30

@Aaron answer几乎可以工作,只有一个问题:当你在视频中点击“完成”,同时仍然将设备放在横向,它不会显示状态栏,直到你将你的设备旋转回肖像。

在这种情况下,我添加了通知观察者,当点击“完成”按钮,然后我切换到肖像编程。

我的代码在Objective C中:

代码语言:javascript
复制
- (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];
}

编辑:

必须将.plist文件中基于控制器的查看状态栏外观设置为YES。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35804693

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档