在我的项目中,我创建了一个ViewController并创建了一个类“AVPlayerViewController”以显示视频。
代码有效,但我能看到视频,但是我在控制台中收到了一些限制警告。
我的项目在没有AutoLayout的情况下工作,我使用AutoResizing。我试过了代码:
self.view.translatesAutoresizingMaskIntoConstraints = false
但警告不会消失,视频播放器的控件移动到屏幕顶部。
有警告:
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:0x1475c4540 h=-&- v=-&- _UIBackdropContentView:0x147443880.width == _UIBackdropView:0x147436a30.width>",
"<NSLayoutConstraint:0x1475b38f0 H:|-(0)-[_UIBackdropView:0x147436a30] (Names: '|':UIView:0x1474368d0 )>",
"<NSLayoutConstraint:0x1475b3980 H:[_UIBackdropView:0x147436a30]-(0)-| (Names: '|':UIView:0x1474368d0 )>",
"<NSLayoutConstraint:0x1475b3650 H:|-(0)-[UIView:0x1474368d0] (Names: '|':AVAlphaUpdatingView:0x14744db30 )>",
"<NSLayoutConstraint:0x1475b36d0 H:[UIView:0x1474368d0]-(0)-| (Names: '|':AVAlphaUpdatingView:0x14744db30 )>",
"<NSLayoutConstraint:0x1475c7670 H:|-(15)-[UIView:0x1474435c0](LTR) (Names: '|':_UIBackdropContentView:0x147443880 )>",
"<NSLayoutConstraint:0x1475c54d0 UIView:0x147443b40.right == _UIBackdropContentView:0x147443880.right>",
"<NSLayoutConstraint:0x1475c7a40 UIView:0x1474435c0.right == UIView:0x147443b40.left - 10>",
"<NSLayoutConstraint:0x1475c4da0 'UIView-Encapsulated-Layout-Width' H:[AVAlphaUpdatingView:0x14744db30(0)]>"
)
Will attempt to recover by breaking constraint
<NSLayoutConstraint:0x1475b3980 H:[_UIBackdropView:0x147436a30]-(0)-| (Names: '|':UIView:0x1474368d0 )>
Make a symbolic breakpoint at UIViewAlertForUnsatisfiableConstraints to catch this in the debugger.
The methods in the UIConstraintBasedLayoutDebugging category on UIView listed in <UIKit/UIView.h> may also be helpful.
任何想法该怎么做?
答案 0 :(得分:5)
根据这个答案Unable to simultaneously satisfy constraints Warnings with AVPlayerViewController embedded in storyboard,解决方案似乎是在PlayerController上设置showsPlayBackControls,然后将其添加到视图中。
获得AVPlayer项目后,您可以再次显示播放器控件(假设您需要它们)。
我怀疑需要一个有效的AVPlayer项才能正确满足玩家控制约束。
我有完全相同的问题并设法通过进行此更改来修复它。祝你好运!
答案 1 :(得分:0)
奇怪的是,您所做的是在主视图下创建第二个视图,然后将您的播放器视图添加为子视图。
这个问题花了我整整一天的时间来解决一个月前,这就是它如何解决的问题。但是,您必须删除任何自动调整约束的代码。
答案 2 :(得分:0)
如果以编程方式为视图控制器创建视图,请将AVPlayerViewController添加为子视图控制器,并将其视图作为loadView()方法中的子视图而不是viewDidLoad()。无需隐藏播放控件。