ios - AVPlayerController : Full screen Autolayout issues

标签 ios swift autolayout avplayer

我正在使用以下代码在我的 Swift 应用程序 (iOS 9) 中播放视频:

        let fileUrl = NSBundle.mainBundle().URLForResource("welcome", withExtension: ".mp4")
        videoItem =  AVPlayerItem(URL: fileUrl!)
        videoPlayer = AVPlayer(playerItem: videoItem)
        videoPlayer.addObserver(self, forKeyPath: "rate", options: [.New], context: nil)

        videoPlayerController.player = videoPlayer
        videoPlayerController.showsPlaybackControls = false

        videoPlayerController.view.frame = CGRectMake(0, 0, playerView.frame.size.width, playerView.frame.size.height)
        playerView.insertSubview(videoPlayerController.view, belowSubview: videoCoverView)

        videoPlayerController.willMoveToParentViewController(self)
        addChildViewController(videoPlayerController)
        videoPlayerController.didMoveToParentViewController(self)

        playerView.bringSubviewToFront(btnPlay)

        let asset = AVAsset(URL: fileUrl!)
        let imageGenerator = AVAssetImageGenerator(asset: asset)
        let time = CMTime(seconds: asset.duration.seconds/2.0, preferredTimescale: 1)

        do {
            let imageRef = try imageGenerator.copyCGImageAtTime(time, actualTime: nil)
            let coverImage = UIImage(CGImage: imageRef)
            videoCoverView.image = coverImage
        } catch {

        }

videoPlayerControllerAVPlayerViewController 的实例。 playerView 是通过 Storyboard添加的,并在其上设置了自动布局。一旦 AVPlayerViewController 的播放器控件出现,以及当我尝试通过播放器控件进入全屏模式时,我都会遇到 Autloayout 问题。这是打印的日志。

2016-05-07 15:18:19.325 VoxTrain[2085:66307] Unable to simultaneously satisfy constraints.
    Probably at least one of the constraints in the following list is one you don't want. 
    Try this: 
        (1) look at each constraint and try to figure out which you don't expect; 
        (2) find the code that added the unwanted constraint or constraints and fix it. 
    (Note: If you're seeing NSAutoresizingMaskLayoutConstraints that you don't understand, refer to the documentation for the UIView property translatesAutoresizingMaskIntoConstraints) 
(
    "<NSAutoresizingMaskLayoutConstraint:0x7fb6a2a3f2c0 h=-&- v=-&- _UIBackdropContentView:0x7fb6a2a02310.width == _UIBackdropView:0x7fb6a053bf90.width>",
    "<NSLayoutConstraint:0x7fb6a2992800 H:|-(14)-[UILabel:0x7fb6a2991220'Hi-Speed Scrubbing']   (Names: '|':_UIBackdropContentView:0x7fb6a2a02310 )>",
    "<NSLayoutConstraint:0x7fb6a2992850 H:[UILabel:0x7fb6a2991220'Hi-Speed Scrubbing']-(14)-|   (Names: '|':_UIBackdropContentView:0x7fb6a2a02310 )>",
    "<NSLayoutConstraint:0x7fb6a29649a0 H:|-(0)-[_UIBackdropView:0x7fb6a053bf90]   (Names: '|':UIView:0x7fb6a0549220 )>",
    "<NSLayoutConstraint:0x7fb6a298b8a0 H:[_UIBackdropView:0x7fb6a053bf90]-(0)-|   (Names: '|':UIView:0x7fb6a0549220 )>",
    "<NSLayoutConstraint:0x7fb6a296f440 H:|-(0)-[UIView:0x7fb6a0549220]   (Names: '|':AVAlphaUpdatingView:0x7fb6a053dae0 )>",
    "<NSLayoutConstraint:0x7fb6a296f490 H:[UIView:0x7fb6a0549220]-(0)-|   (Names: '|':AVAlphaUpdatingView:0x7fb6a053dae0 )>",
    "<NSLayoutConstraint:0x7fb6a2a40cc0 'UIView-Encapsulated-Layout-Width' H:[AVAlphaUpdatingView:0x7fb6a053dae0(0)]>"
)

在最初的方法之后,我尝试在 videoPlayerController 的 View 上设置 autolayout,并将 translatesAutoresizingMaskIntoConstraints 设置为 false。但问题仍然存在。我该如何解决这些问题?

最佳答案

使用此代码,

viewDidLoad 方法:

        let type : String! = "mp4"
        let targetURL : String? = NSBundle.mainBundle().pathForResource("Welcome", ofType: type)

        let videoURL = NSURL(fileURLWithPath:targetURL!)


        let player = AVPlayer(URL: videoURL)
        let playerController = AVPlayerViewController()

        playerController.player = player
        self.addChildViewController(playerController)
        self.playView.addSubview(playerController.view)
        playerController.view.frame = playView.bounds

        player.play()

我的 Storyboard View 如下所示,

enter image description here

我已经创建了 UIView,然后设置解决的顶部、左侧、右侧和高度。它对我有用

希望对你有帮助

关于ios - AVPlayerController : Full screen Autolayout issues,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37087319/

相关文章:

ios - 无法使用多个语句在 iOS 中的 sqlite 中将数据从一个表插入到另一个表

ios - 图 block 大小,视网膜与非视网膜,iPad 与 iPhone

objective-c - 如何在 iOS < 4 中停止 UIView 动画

swift - 无法实例化使用另一个泛型作为参数的泛型类型 - 无法为类型调用初始值设定项

ios - 将项目附加到数组会覆盖以前的项目并添加新项目

ios - 将约束应用于 Facebook 登录按钮

ios - 寻找新 Xamarin IOS 项目的侧边菜单

ios + Parse.com - 使表只读

ios - Swift - UIScrollView 的约束问题(以编程方式)

ios - 为所有设备屏幕设置UIImage覆盖屏幕,xib文件