在Swift之后出现在导航栏下方的灰色条
当我继续到特定的VC时,我的导航栏下方会出现一个与我的导航栏+状态栏大小完全相同的灰色条。 在另一个VC中,灰色条不在那里,除非我打开Youtube,然后使用iOS 9“回到”App“button。
这是它的样子:
正如你从图片中可以看到的那样,灰色条并没有覆盖YTPlayerView,而是将其推倒。
这里发生了什么?
编辑
为了清晰,我添加了视图层次结构。
编辑
我添加了有关YTPlayerView
的约束。
编辑
约束顶部布局指南是0
我不完全理解这个问题,但似乎是一个视图层次问题?
这是有缺陷的层次结构; 我改变了stackView的颜色,看它是不是罪魁祸首,但事实并非如此。
我做了更多的testing,发现问题包含在YTPlayerView
。
YTPlayerView
开始包括灰色空间,但在Safari中使用iOS 9“回到应用程序”function前往Youtube.com后,灰色条将视图向下推进。
最终解决这个问题的只是在层次结构中设置较低的YTPlayerView
,如下所示:
使用“返回到应用程序”function后,灰色条不再出现。
我曾经有过类似的问题。 这与使用segues无关。 这个问题很可能是你正在使用的约束。 设置YTPlayerView
相对于顶部布局指南的顶部约束,而不是超级顶视图(您可能已经完成)。 除非我知道你提供的限制,否则我不能特别说明这个问题的解决办法。 提供超级视图顶部的约束会导致这种问题,当你是“呈现”一个视图控制器和“消除”它,这是类似于你正在做的IOS 9回到应用程序选项的行动。 只要试着用我提到的约束,如果它不能解决问题,请尝试给出一些关于你正在使用的约束的细节。
编辑
更具体地说,现在你必须将YTPlayerView
的顶部约束设置为一个固定的距离(这等于导航条加上状态栏的高度,我假设为64px )到superview的顶部,这是ViewController的视图 。 这需要改变,顶部的约束需要设置为顶部布局指南 0px 。 这应该可以解决你的问题。
编辑2
由于您仍然遇到问题,请尝试将顶部约束的IBOutlet
连接到ViewController,然后在视图控制器的viewDidAppear
方法中将其设置为零。
目标C :
topConstraint.constant = 0; [self.view layoutSubviews];
Swift :
topConstraint.constant = 0 self.view.layoutSubviews()
只是为了确认, YTPlayerView
是灰色的吧?
Swift 3中的另一种方法:
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { // Navigation bar will be black throughout the app UINavigationBar.appearance().barStyle = .blackOpaque return true }
您的video视图的屏幕大小和videoinput的16:9比例都受到约束。 我可以确认这会在videoFeed上面创build灰色栏。 您可以尝试没有宽高比(在这种情况下,屏幕尺寸将自行设置)。