我的应用程序在纵向方向上工作正常,但当我转向横向模式时,我看到白色正方形半视图。
有什么问题?
电影播放器代码
moviePlayer = MPMoviePlayerController(contentURL: stream)
moviePlayer.view.frame = CGRect(x: 0, y: 0, width: self.view.frame.size.width, height: self.view.frame.size.height)
moviePlayer.view.sizeToFit()
self.view.addSubview(moviePlayer.view)
moviePlayer.fullscreen = true
moviePlayer.controlStyle = MPMovieControlStyle.Embedded
}
答案 0 :(得分:2)
当超级视图的界限发生变化时,您需要调整moviePlayer
的大小。
一种解决方案是移动这一行:
moviePlayer.view.frame = CGRect(x: 0, y: 0, width: self.view.frame.size.width, height: self.view.frame.size.height)
进入viewWillLayoutSubviews
(如果这是一个视图控制器子类)或layoutSubviews
(如果这是一个视图子类)。
另一种方法是使用自动布局而不是手动布局。
答案 1 :(得分:0)
当您没有使用autolayout
时,您必须在方向完成后更新视图框架,为此您可以使用方法
override func viewWillTransitionToSize(size: CGSize, withTransitionCoordinator coordinator: UIViewControllerTransitionCoordinator) {
}
每次完成方向更改时都会调用此方法,您可以在此处根据需要更新或设置视图。
另一种方法是使用非常有效的Autolayout。