iOS - 向应用程序窗口添加导航栏

Posted

技术标签:

【中文标题】iOS - 向应用程序窗口添加导航栏【英文标题】:iOS - adding a navigation bar to the application window 【发布时间】:2014-08-19 10:09:40 【问题描述】:

我有一个带有Kaltura video player 的应用程序,当设备旋转到横向时,它会切换到全屏模式。 基本上,应用程序的主 VC 有一个容器视图,其中包含一个表格视图和一个视频播放器视图,我称之为:

[self.containerView addSubview:playerViewController.view];

在我的“viewDidAppear”方法中添加播放器。当设备切换到横向模式时,我称之为:

[[[UIApplication sharedApplication] delegate].window addSubview:playerViewController.view];

为了让播放器出现在整个屏幕上,当设备切换回纵向模式时,我再次调用:

[self.containerView addSubview:playerViewController.view];

这很好用,但是当设备处于横向时这也会隐藏应用的导航栏(可能是因为在其上添加了播放器)。

我也想在设备处于横向模式时显示导航栏,但由于某种原因,我在设备切换到横向模式时使用的代码行是唯一真正将播放器置于整个屏幕并将其横向旋转。

我有什么办法可以在播放器上重新添加导航栏?或者也许让它成为应用程序窗口的一部分,这样它就不会隐藏在播放器下面? 如果您需要我添加更多解释或代码,请告诉我。 谢谢!!

解决了!!!查看已接受的答案

【问题讨论】:

【参考方案1】:

尝试在您的viewController 中添加以下代码:

- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration 

    [[self navigationController] setNavigationBarHidden:UIInterfaceOrientationIsPotrait(toInterfaceOrientation) animated:YES];


【讨论】:

感谢您的回复,我已经这样做了,因为当设备处于纵向模式时导航栏需要隐藏,但它不起作用。我认为这是因为我将播放器添加到应用程序窗口,导致它位于导航栏的顶部。意思是,酒吧在那里,但它隐藏在播放器下方。也许有一种方法可以在播放器上重新添加导航栏?【参考方案2】:

您必须从其父视图中删除该视图。

[playerViewController.view removeFromSuperview];

在添加为子视图之前。

【讨论】:

谢谢,在添加到新位置之前,该播放器已从其先前位置移除... 之后你遇到同样的问题吗? 是的。我认为问题出在其他地方。整个应用程序运行良好,除了导航栏的这个问题【参考方案3】:

解决了!!!

我最终创建了一个“调整播放器大小”方法,它只是为播放器视图设置新的宽度和高度参数。这样我就不需要在每次设备改变方向时重新添加子视图,并且导航栏也可以在横向模式下看到。

谢谢大家!! :)

【讨论】:

以上是关于iOS - 向应用程序窗口添加导航栏的主要内容,如果未能解决你的问题,请参考以下文章

向导航栏添加半透明工具栏会导致 iOS 7 中出现渲染问题

向导航栏添加渐变将隐藏 iOS 13.0 + 中的栏按钮项目

在导航栏中自动添加“返回”按钮

iOS 8 -- 对导航栏和状态栏应用模糊

在基于窗口的应用程序 iPhone 中添加标签栏和导航栏

向导航栏添加另一个按钮