AVPlayerViewController has incorrect size of content overlay view
Originator: | oleg.oleksan | ||
Number: | rdar://6468254622 | Date Originated: | 09/28/17 |
Status: | Closed | Resolved: | iOS 11.0.1 |
Product: | iOS SDK | Product Version: | iOS 11.0 beta (15A5370a) |
Classification: | Bug | Reproducible: | 100% |
Area: AVKit Summary: AVPlayerViewController shows the overlay view at the top. The view has incorrect size in fullscreen and windowed modes. Steps to reproduce: 1. Launch the project on iOS 11 https://github.com/sample-repo/AVPlayerViewController-Bug/tree/master/AVPlayerViewController-Bug-iOS11. 2. Launch the project on iOS 10 https://github.com/sample-repo/AVPlayerViewController-Bug/tree/master/AVPlayerViewController-Bug-iOS10. 3. Compare results (see Readme https://github.com/sample-repo/AVPlayerViewController-Bug). Expected Results: Content overlay view has correct size to attach custom views at center/bottom/top. According to documentation: "Use the content overlay view to add additional custom views between the video content and the controls." Version: iOS 11 beta 9. Notes:
Comments
Please note: Reports posted here will not necessarily be seen by Apple. All problems should be submitted at bugreport.apple.com before they are posted here. Please only post information for Radars that you have filed yourself, and please do not include Apple confidential information in your posts. Thank you!
How did you get such a high bug ID number?
Got Apple' response
Until a fix is incorporated into a future version of iOS for this problem, developers who need to use autolayout in contentOverlayView subviews should set the property to true manually before adding subviews to it like this:
playerViewController.view.setNeedsLayout() playerViewController.view.layoutIfNeeded() playerViewController.contentOverlayView?.translatesAutoresizingMaskIntoConstraints = true
I messed with this today and it works fine if you don't use auto layout.
`
if let overlayView = playerController.contentOverlayView { myView.frame = overlayView.bounds myView.autoresizingMask = [.flexibleWidth, .flexibleHeight] overlayView.addSubview(myView) } `