web-dev-qa-db-ja.com

ストーリーボードに埋め込まれたAVPlayerViewControllerで制約警告を同時に満たすことができない

別のビューコントローラーに埋め込むことで、ストーリーボードを介してAVPlayerViewControllerを完全にセットアップしようとしています。

手順:

  1. Xcodeでシングルビューアプリケーションを作成します。
  2. 埋め込みコントローラーVCナビゲーションコントローラーに。
  3. 下部にツールバーを追加します(superView(Leading、Trailing、Bottom Layout Guide、Height(44))に固定されています)。
  4. 親ビューコントローラーにコンテナービューを追加します(superView(Leading、Trailing)、上部レイアウトガイド、ツールバー上部に固定)。
  5. コンテナビューに付属しているデフォルトのビューコントローラを削除します。
  6. オブジェクトライブラリからAV Player View Controllerオブジェクトをドラッグします。
  7. 埋め込みセグエをコンテナービューからAVプレーヤービューコントローラーに接続します。

コードが追加されていません。

これは私のstoryboardが次のように見えるものです:

enter image description here

ビューの階層:

enter image description here

すべてが正常に実行されます:しかし問題は次のとおりです:実行するとすぐに、デバッガーで次の警告が表示されます:

2015-09-30 12:58:35.904 AVPlayerTest[9352:446772] 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:0x7f93259513b0 h=-&- v=-&- _UIBackdropContentView:0x7f9325860000.width == _UIBackdropView:0x7f932585e990.width>",
    "<NSLayoutConstraint:0x7f932592bc70 H:|-(14)-[UILabel:0x7f9325925590'Hi-Speed Scrubbing']   (Names: '|':_UIBackdropContentView:0x7f9325860000 )>",
    "<NSLayoutConstraint:0x7f932592bcf0 H:[UILabel:0x7f9325925590'Hi-Speed Scrubbing']-(14)-|   (Names: '|':_UIBackdropContentView:0x7f9325860000 )>",
    "<NSLayoutConstraint:0x7f932592b770 H:|-(0)-[_UIBackdropView:0x7f932585e990]   (Names: '|':UIView:0x7f932585e830 )>",
    "<NSLayoutConstraint:0x7f932592b7f0 H:[_UIBackdropView:0x7f932585e990]-(0)-|   (Names: '|':UIView:0x7f932585e830 )>",
    "<NSLayoutConstraint:0x7f932592b450 H:|-(0)-[UIView:0x7f932585e830]   (Names: '|':AVAlphaUpdatingView:0x7f932585e310 )>",
    "<NSLayoutConstraint:0x7f932592b4d0 H:[UIView:0x7f932585e830]-(0)-|   (Names: '|':AVAlphaUpdatingView:0x7f932585e310 )>",
    "<NSLayoutConstraint:0x7f932594aa10 'UIView-Encapsulated-Layout-Width' H:[AVAlphaUpdatingView:0x7f932585e310(0)]>"
)

Will attempt to recover by breaking constraint 
<NSLayoutConstraint:0x7f932592bcf0 H:[UILabel:0x7f9325925590'Hi-Speed Scrubbing']-(14)-|   (Names: '|':_UIBackdropContentView:0x7f9325860000 )>

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.
2015-09-30 12:58:35.905 AVPlayerTest[9352:446772] 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:0x7f93259513b0 h=-&- v=-&- _UIBackdropContentView:0x7f9325860000.width == _UIBackdropView:0x7f932585e990.width>",
    "<NSLayoutConstraint:0x7f932592bdd0 H:|-(14)-[UILabel:0x7f9325929bb0'Slide your finger up to a...']   (Names: '|':_UIBackdropContentView:0x7f9325860000 )>",
    "<NSLayoutConstraint:0x7f932592be50 H:[UILabel:0x7f9325929bb0'Slide your finger up to a...']-(14)-|   (Names: '|':_UIBackdropContentView:0x7f9325860000 )>",
    "<NSLayoutConstraint:0x7f932592b770 H:|-(0)-[_UIBackdropView:0x7f932585e990]   (Names: '|':UIView:0x7f932585e830 )>",
    "<NSLayoutConstraint:0x7f932592b7f0 H:[_UIBackdropView:0x7f932585e990]-(0)-|   (Names: '|':UIView:0x7f932585e830 )>",
    "<NSLayoutConstraint:0x7f932592b450 H:|-(0)-[UIView:0x7f932585e830]   (Names: '|':AVAlphaUpdatingView:0x7f932585e310 )>",
    "<NSLayoutConstraint:0x7f932592b4d0 H:[UIView:0x7f932585e830]-(0)-|   (Names: '|':AVAlphaUpdatingView:0x7f932585e310 )>",
    "<NSLayoutConstraint:0x7f932594aa10 'UIView-Encapsulated-Layout-Width' H:[AVAlphaUpdatingView:0x7f932585e310(0)]>"
)

Will attempt to recover by breaking constraint 
<NSLayoutConstraint:0x7f932592be50 H:[UILabel:0x7f9325929bb0'Slide your finger up to a...']-(14)-|   (Names: '|':_UIBackdropContentView:0x7f9325860000 )>

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.
2015-09-30 12:58:35.906 AVPlayerTest[9352:446772] 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) 
(
    "<NSLayoutConstraint:0x7f932592b5e0 V:|-(>=0)-[UIView:0x7f932585e830]   (Names: '|':AVAlphaUpdatingView:0x7f932585e310 )>",
    "<NSLayoutConstraint:0x7f932592b660 V:[UIView:0x7f932585e830]-(0)-|   (Names: '|':AVAlphaUpdatingView:0x7f932585e310 )>",
    "<NSLayoutConstraint:0x7f932592af50 V:[UIView:0x7f932585e830(44)]>",
    "<NSLayoutConstraint:0x7f9325952c30 'UIView-Encapsulated-Layout-Height' V:[AVAlphaUpdatingView:0x7f932585e310(0)]>"
)

Will attempt to recover by breaking constraint 
<NSLayoutConstraint:0x7f932592b660 V:[UIView:0x7f932585e830]-(0)-|   (Names: '|':AVAlphaUpdatingView:0x7f932585e310 )>

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.
2015-09-30 12:58:35.907 AVPlayerTest[9352:446772] 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:0x7f93259513b0 h=-&- v=-&- _UIBackdropContentView:0x7f9325860000.width == _UIBackdropView:0x7f932585e990.width>",
    "<NSLayoutConstraint:0x7f932592ba00 H:|-(0)-[UIView:0x7f932585fbc0]   (Names: '|':_UIBackdropContentView:0x7f9325860000 )>",
    "<NSLayoutConstraint:0x7f932592ba80 H:[UIView:0x7f932585fbc0]-(0)-|   (Names: '|':_UIBackdropContentView:0x7f9325860000 )>",
    "<NSLayoutConstraint:0x7f932592b770 H:|-(0)-[_UIBackdropView:0x7f932585e990]   (Names: '|':UIView:0x7f932585e830 )>",
    "<NSLayoutConstraint:0x7f932592b7f0 H:[_UIBackdropView:0x7f932585e990]-(0)-|   (Names: '|':UIView:0x7f932585e830 )>",
    "<NSLayoutConstraint:0x7f932592b450 H:|-(0)-[UIView:0x7f932585e830]   (Names: '|':AVAlphaUpdatingView:0x7f932585e310 )>",
    "<NSLayoutConstraint:0x7f932592b4d0 H:[UIView:0x7f932585e830]-(0)-|   (Names: '|':AVAlphaUpdatingView:0x7f932585e310 )>",
    "<NSLayoutConstraint:0x7f932582a040 H:|-(14)-[AVButton:0x7f93258609b0](LTR)   (Names: '|':UIView:0x7f932585fbc0 )>",
    "<NSLayoutConstraint:0x7f9325829f90 H:[AVButton:0x7f93258609b0]-(15)-[UILabel:0x7f932347dc20'--:--'](LTR)>",
    "<NSLayoutConstraint:0x7f9325839550 H:[UILabel:0x7f932347dc20'--:--']-(12)-[AVScrubber:0x7f93234a4350](LTR)>",
    "<NSLayoutConstraint:0x7f932585a2f0 AVScrubber:0x7f93234a4350.right == UILabel:0x7f932583a470'--:--'.left - 12>",
    "<NSLayoutConstraint:0x7f932580b390 UILabel:0x7f932583a470'--:--'.right == AVButton:0x7f932585e480.left - 15>",
    "<NSLayoutConstraint:0x7f932586f490 AVButton:0x7f932585e480.right == AVButton:0x7f93234d1790.left - 10>",
    "<NSLayoutConstraint:0x7f932580b340 AVButton:0x7f93234d1790.right == AVButton:0x7f93234d6540.left - 10>",
    "<NSLayoutConstraint:0x7f932584c870 AVButton:0x7f93234d6540.right == UIView:0x7f932585fbc0.right - 14>",
    "<NSLayoutConstraint:0x7f932594aa10 'UIView-Encapsulated-Layout-Width' H:[AVAlphaUpdatingView:0x7f932585e310(0)]>"
)

Will attempt to recover by breaking constraint 
<NSLayoutConstraint:0x7f9325829f90 H:[AVButton:0x7f93258609b0]-(15)-[UILabel:0x7f932347dc20'--:--'](LTR)>

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.
2015-09-30 12:58:35.909 AVPlayerTest[9352:446772] 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:0x7f93259513b0 h=-&- v=-&- _UIBackdropContentView:0x7f9325860000.width == _UIBackdropView:0x7f932585e990.width>",
    "<NSLayoutConstraint:0x7f932592ba00 H:|-(0)-[UIView:0x7f932585fbc0]   (Names: '|':_UIBackdropContentView:0x7f9325860000 )>",
    "<NSLayoutConstraint:0x7f932592ba80 H:[UIView:0x7f932585fbc0]-(0)-|   (Names: '|':_UIBackdropContentView:0x7f9325860000 )>",
    "<NSLayoutConstraint:0x7f932592b770 H:|-(0)-[_UIBackdropView:0x7f932585e990]   (Names: '|':UIView:0x7f932585e830 )>",
    "<NSLayoutConstraint:0x7f932592b7f0 H:[_UIBackdropView:0x7f932585e990]-(0)-|   (Names: '|':UIView:0x7f932585e830 )>",
    "<NSLayoutConstraint:0x7f932592b450 H:|-(0)-[UIView:0x7f932585e830]   (Names: '|':AVAlphaUpdatingView:0x7f932585e310 )>",
    "<NSLayoutConstraint:0x7f932592b4d0 H:[UIView:0x7f932585e830]-(0)-|   (Names: '|':AVAlphaUpdatingView:0x7f932585e310 )>",
    "<NSLayoutConstraint:0x7f932582a040 H:|-(14)-[AVButton:0x7f93258609b0](LTR)   (Names: '|':UIView:0x7f932585fbc0 )>",
    "<NSLayoutConstraint:0x7f932586f490 AVButton:0x7f932585e480.right == AVButton:0x7f93234d1790.left - 10>",
    "<NSLayoutConstraint:0x7f932580b340 AVButton:0x7f93234d1790.right == AVButton:0x7f93234d6540.left - 10>",
    "<NSLayoutConstraint:0x7f932584c870 AVButton:0x7f93234d6540.right == UIView:0x7f932585fbc0.right - 14>",
    "<NSLayoutConstraint:0x7f9325859740 H:[AVButton:0x7f93258609b0]-(>=15)-[UILabel:0x7f93234e53f0'Live Broadcast'](LTR)>",
    "<NSLayoutConstraint:0x7f932583bea0 UILabel:0x7f93234e53f0'Live Broadcast'.right <= AVButton:0x7f932585e480.left - 15>",
    "<NSLayoutConstraint:0x7f932594aa10 'UIView-Encapsulated-Layout-Width' H:[AVAlphaUpdatingView:0x7f932585e310(0)]>"
)

Will attempt to recover by breaking constraint 
<NSLayoutConstraint:0x7f9325859740 H:[AVButton:0x7f93258609b0]-(>=15)-[UILabel:0x7f93234e53f0'Live Broadcast'](LTR)>

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.
2015-09-30 12:58:35.910 AVPlayerTest[9352:446772] 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:0x7f93259513b0 h=-&- v=-&- _UIBackdropContentView:0x7f9325860000.width == _UIBackdropView:0x7f932585e990.width>",
    "<NSLayoutConstraint:0x7f9323520650 H:|-(0)-[UIActivityIndicatorView:0x7f93234e6ee0]   (Names: '|':UIView:0x7f93234e6120 )>",
    "<NSLayoutConstraint:0x7f93235206a0 H:[UIActivityIndicatorView:0x7f93234e6ee0]-(10)-[UILabel:0x7f93235203b0'Loading\U2026']>",
    "<NSLayoutConstraint:0x7f9323520740 H:[UILabel:0x7f93235203b0'Loading\U2026']-(0)-|   (Names: '|':UIView:0x7f93234e6120 )>",
    "<NSLayoutConstraint:0x7f9323521f90 H:|-(>=0)-[UIView:0x7f93234e6120]   (Names: '|':AVLoadingIndicatorView:0x7f93234e5fb0 )>",
    "<NSLayoutConstraint:0x7f9323510da0 UIView:0x7f93234e6120.centerX == AVLoadingIndicatorView:0x7f93234e5fb0.centerX>",
    "<NSLayoutConstraint:0x7f932592ba00 H:|-(0)-[UIView:0x7f932585fbc0]   (Names: '|':_UIBackdropContentView:0x7f9325860000 )>",
    "<NSLayoutConstraint:0x7f932592ba80 H:[UIView:0x7f932585fbc0]-(0)-|   (Names: '|':_UIBackdropContentView:0x7f9325860000 )>",
    "<NSLayoutConstraint:0x7f932592b770 H:|-(0)-[_UIBackdropView:0x7f932585e990]   (Names: '|':UIView:0x7f932585e830 )>",
    "<NSLayoutConstraint:0x7f932592b7f0 H:[_UIBackdropView:0x7f932585e990]-(0)-|   (Names: '|':UIView:0x7f932585e830 )>",
    "<NSLayoutConstraint:0x7f932592b450 H:|-(0)-[UIView:0x7f932585e830]   (Names: '|':AVAlphaUpdatingView:0x7f932585e310 )>",
    "<NSLayoutConstraint:0x7f932592b4d0 H:[UIView:0x7f932585e830]-(0)-|   (Names: '|':AVAlphaUpdatingView:0x7f932585e310 )>",
    "<NSLayoutConstraint:0x7f932582a040 H:|-(14)-[AVButton:0x7f93258609b0](LTR)   (Names: '|':UIView:0x7f932585fbc0 )>",
    "<NSLayoutConstraint:0x7f932586f490 AVButton:0x7f932585e480.right == AVButton:0x7f93234d1790.left - 10>",
    "<NSLayoutConstraint:0x7f932580b340 AVButton:0x7f93234d1790.right == AVButton:0x7f93234d6540.left - 10>",
    "<NSLayoutConstraint:0x7f932584c870 AVButton:0x7f93234d6540.right == UIView:0x7f932585fbc0.right - 14>",
    "<NSLayoutConstraint:0x7f932583bbc0 H:[AVButton:0x7f93258609b0]-(>=15)-[AVLoadingIndicatorView:0x7f93234e5fb0](LTR)>",
    "<NSLayoutConstraint:0x7f932583bc10 AVLoadingIndicatorView:0x7f93234e5fb0.right <= AVButton:0x7f932585e480.left - 15>",
    "<NSLayoutConstraint:0x7f932594aa10 'UIView-Encapsulated-Layout-Width' H:[AVAlphaUpdatingView:0x7f932585e310(0)]>"
)

Will attempt to recover by breaking constraint 
<NSLayoutConstraint:0x7f93235206a0 H:[UIActivityIndicatorView:0x7f93234e6ee0]-(10)-[UILabel:0x7f93235203b0'Loading…']>

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.
2015-09-30 12:58:35.912 AVPlayerTest[9352:446772] 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:0x7f93259513b0 h=-&- v=-&- _UIBackdropContentView:0x7f9325860000.width == _UIBackdropView:0x7f932585e990.width>",
    "<NSLayoutConstraint:0x7f9323521f90 H:|-(>=0)-[UIView:0x7f93234e6120]   (Names: '|':AVLoadingIndicatorView:0x7f93234e5fb0 )>",
    "<NSLayoutConstraint:0x7f9323510da0 UIView:0x7f93234e6120.centerX == AVLoadingIndicatorView:0x7f93234e5fb0.centerX>",
    "<NSLayoutConstraint:0x7f932592ba00 H:|-(0)-[UIView:0x7f932585fbc0]   (Names: '|':_UIBackdropContentView:0x7f9325860000 )>",
    "<NSLayoutConstraint:0x7f932592ba80 H:[UIView:0x7f932585fbc0]-(0)-|   (Names: '|':_UIBackdropContentView:0x7f9325860000 )>",
    "<NSLayoutConstraint:0x7f932592b770 H:|-(0)-[_UIBackdropView:0x7f932585e990]   (Names: '|':UIView:0x7f932585e830 )>",
    "<NSLayoutConstraint:0x7f932592b7f0 H:[_UIBackdropView:0x7f932585e990]-(0)-|   (Names: '|':UIView:0x7f932585e830 )>",
    "<NSLayoutConstraint:0x7f932592b450 H:|-(0)-[UIView:0x7f932585e830]   (Names: '|':AVAlphaUpdatingView:0x7f932585e310 )>",
    "<NSLayoutConstraint:0x7f932592b4d0 H:[UIView:0x7f932585e830]-(0)-|   (Names: '|':AVAlphaUpdatingView:0x7f932585e310 )>",
    "<NSLayoutConstraint:0x7f932582a040 H:|-(14)-[AVButton:0x7f93258609b0](LTR)   (Names: '|':UIView:0x7f932585fbc0 )>",
    "<NSLayoutConstraint:0x7f932586f490 AVButton:0x7f932585e480.right == AVButton:0x7f93234d1790.left - 10>",
    "<NSLayoutConstraint:0x7f932580b340 AVButton:0x7f93234d1790.right == AVButton:0x7f93234d6540.left - 10>",
    "<NSLayoutConstraint:0x7f932584c870 AVButton:0x7f93234d6540.right == UIView:0x7f932585fbc0.right - 14>",
    "<NSLayoutConstraint:0x7f932583bbc0 H:[AVButton:0x7f93258609b0]-(>=15)-[AVLoadingIndicatorView:0x7f93234e5fb0](LTR)>",
    "<NSLayoutConstraint:0x7f932583bc10 AVLoadingIndicatorView:0x7f93234e5fb0.right <= AVButton:0x7f932585e480.left - 15>",
    "<NSLayoutConstraint:0x7f932594aa10 'UIView-Encapsulated-Layout-Width' H:[AVAlphaUpdatingView:0x7f932585e310(0)]>"
)

Will attempt to recover by breaking constraint 
<NSLayoutConstraint:0x7f9323510da0 UIView:0x7f93234e6120.centerX == AVLoadingIndicatorView:0x7f93234e5fb0.centerX>

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.
2015-09-30 12:58:35.912 AVPlayerTest[9352:446772] 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:0x7f93259513b0 h=-&- v=-&- _UIBackdropContentView:0x7f9325860000.width == _UIBackdropView:0x7f932585e990.width>",
    "<NSLayoutConstraint:0x7f9323521f90 H:|-(>=0)-[UIView:0x7f93234e6120]   (Names: '|':AVLoadingIndicatorView:0x7f93234e5fb0 )>",
    "<NSLayoutConstraint:0x7f9323510d10 H:[UIView:0x7f93234e6120]-(>=0)-|   (Names: '|':AVLoadingIndicatorView:0x7f93234e5fb0 )>",
    "<NSLayoutConstraint:0x7f932592ba00 H:|-(0)-[UIView:0x7f932585fbc0]   (Names: '|':_UIBackdropContentView:0x7f9325860000 )>",
    "<NSLayoutConstraint:0x7f932592ba80 H:[UIView:0x7f932585fbc0]-(0)-|   (Names: '|':_UIBackdropContentView:0x7f9325860000 )>",
    "<NSLayoutConstraint:0x7f932592b770 H:|-(0)-[_UIBackdropView:0x7f932585e990]   (Names: '|':UIView:0x7f932585e830 )>",
    "<NSLayoutConstraint:0x7f932592b7f0 H:[_UIBackdropView:0x7f932585e990]-(0)-|   (Names: '|':UIView:0x7f932585e830 )>",
    "<NSLayoutConstraint:0x7f932592b450 H:|-(0)-[UIView:0x7f932585e830]   (Names: '|':AVAlphaUpdatingView:0x7f932585e310 )>",
    "<NSLayoutConstraint:0x7f932592b4d0 H:[UIView:0x7f932585e830]-(0)-|   (Names: '|':AVAlphaUpdatingView:0x7f932585e310 )>",
    "<NSLayoutConstraint:0x7f932582a040 H:|-(14)-[AVButton:0x7f93258609b0](LTR)   (Names: '|':UIView:0x7f932585fbc0 )>",
    "<NSLayoutConstraint:0x7f932586f490 AVButton:0x7f932585e480.right == AVButton:0x7f93234d1790.left - 10>",
    "<NSLayoutConstraint:0x7f932580b340 AVButton:0x7f93234d1790.right == AVButton:0x7f93234d6540.left - 10>",
    "<NSLayoutConstraint:0x7f932584c870 AVButton:0x7f93234d6540.right == UIView:0x7f932585fbc0.right - 14>",
    "<NSLayoutConstraint:0x7f932583bbc0 H:[AVButton:0x7f93258609b0]-(>=15)-[AVLoadingIndicatorView:0x7f93234e5fb0](LTR)>",
    "<NSLayoutConstraint:0x7f932583bc10 AVLoadingIndicatorView:0x7f93234e5fb0.right <= AVButton:0x7f932585e480.left - 15>",
    "<NSLayoutConstraint:0x7f932594aa10 'UIView-Encapsulated-Layout-Width' H:[AVAlphaUpdatingView:0x7f932585e310(0)]>"
)

Will attempt to recover by breaking constraint 
<NSLayoutConstraint:0x7f9323510d10 H:[UIView:0x7f93234e6120]-(>=0)-|   (Names: '|':AVLoadingIndicatorView:0x7f93234e5fb0 )>

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.
2015-09-30 12:58:35.913 AVPlayerTest[9352:446772] 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:0x7f93259513b0 h=-&- v=-&- _UIBackdropContentView:0x7f9325860000.width == _UIBackdropView:0x7f932585e990.width>",
    "<NSLayoutConstraint:0x7f932592ba00 H:|-(0)-[UIView:0x7f932585fbc0]   (Names: '|':_UIBackdropContentView:0x7f9325860000 )>",
    "<NSLayoutConstraint:0x7f932592ba80 H:[UIView:0x7f932585fbc0]-(0)-|   (Names: '|':_UIBackdropContentView:0x7f9325860000 )>",
    "<NSLayoutConstraint:0x7f932592b770 H:|-(0)-[_UIBackdropView:0x7f932585e990]   (Names: '|':UIView:0x7f932585e830 )>",
    "<NSLayoutConstraint:0x7f932592b7f0 H:[_UIBackdropView:0x7f932585e990]-(0)-|   (Names: '|':UIView:0x7f932585e830 )>",
    "<NSLayoutConstraint:0x7f932592b450 H:|-(0)-[UIView:0x7f932585e830]   (Names: '|':AVAlphaUpdatingView:0x7f932585e310 )>",
    "<NSLayoutConstraint:0x7f932592b4d0 H:[UIView:0x7f932585e830]-(0)-|   (Names: '|':AVAlphaUpdatingView:0x7f932585e310 )>",
    "<NSLayoutConstraint:0x7f932582a040 H:|-(14)-[AVButton:0x7f93258609b0](LTR)   (Names: '|':UIView:0x7f932585fbc0 )>",
    "<NSLayoutConstraint:0x7f932586f490 AVButton:0x7f932585e480.right == AVButton:0x7f93234d1790.left - 10>",
    "<NSLayoutConstraint:0x7f932580b340 AVButton:0x7f93234d1790.right == AVButton:0x7f93234d6540.left - 10>",
    "<NSLayoutConstraint:0x7f932584c870 AVButton:0x7f93234d6540.right == UIView:0x7f932585fbc0.right - 14>",
    "<NSLayoutConstraint:0x7f932583bbc0 H:[AVButton:0x7f93258609b0]-(>=15)-[AVLoadingIndicatorView:0x7f93234e5fb0](LTR)>",
    "<NSLayoutConstraint:0x7f932583bc10 AVLoadingIndicatorView:0x7f93234e5fb0.right <= AVButton:0x7f932585e480.left - 15>",
    "<NSLayoutConstraint:0x7f932594aa10 'UIView-Encapsulated-Layout-Width' H:[AVAlphaUpdatingView:0x7f932585e310(0)]>"
)

Will attempt to recover by breaking constraint 
<NSLayoutConstraint:0x7f932583bbc0 H:[AVButton:0x7f93258609b0]-(>=15)-[AVLoadingIndicatorView:0x7f93234e5fb0](LTR)>

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.

長いログは申し訳ありませんが、それを含めてすべてが一度に表示されます。何が欠けていますか?自動レイアウトはうまく機能しています。ローテーションでも。これらの警告が表示されるのはなぜですか?

追加 サンプルプロジェクト

P.S。:Xcodeバージョン7.0の使用

[〜#〜]更新[〜#〜]

Shows Playback Controls属性インスペクタのAVPlayerViewControllerを修正すると、どういうわけか修正され、警告は表示されません。しかし、私はコントロールが必要です。ますますバグのようです。

34
Ishan Handa

実際、Apple側のバグだと思います。

私は回避策を見つけました:AVPlayerViewController.playerが設定された後、showsPlaybackControlsをYESに設定します。

次の行を使用してサンプルを変更すると、制約エラーは表示されなくなります。

@interface ViewController ()

@property(weak, nonatomic) AVPlayerViewController * playerViewController;


@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];

    NSString *path = [[NSBundle mainBundle] pathForResource:@"test" ofType:@"mp4"];
    NSURL *url = [[NSURL alloc] initFileURLWithPath: path];
    AVPlayer * player = [AVPlayer playerWithURL:url];

    self.playerViewController.player = player;
    self.playerViewController.showsPlaybackControls = YES;
}


- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    if ([segue.identifier isEqualToString:@"AVPlayerSegue"]) {
        self.playerViewController = segue.destinationViewController;
    }
}


@end

ファイルtest.mp4がプロジェクトに追加されました。

28
gbitaudeau

私の場合、AVPlayerViewControllerがすべての方向を持つようにしたいので、iPhoneではポートレートモードのみを許可します。

AppDelegateには、次のようなコードがあります。

public func application(application: UIApplication, supportedInterfaceOrientationsForWindow window: UIWindow?) -> UIInterfaceOrientationMask {

    if self.window?.rootViewController?.presentedViewController is AVPlayerViewController {

        return .All
    }
    return Device.current.contains(.iPhone) ? [.Portrait, .PortraitUpsideDown] : .All
}

AVPlayerViewControllerがモーダルで表示され、横向きに回転して閉じられると、いくつかの制約が破られた非常に微妙なエラースタックが表示されます。

回避策として、このコードをRootViewControllerに追加しました。これにより、アプリケーション内のAVPlayerViewControllerのインスタンスも表示されます。

public override func dismissViewControllerAnimated(flag: Bool, completion: (() -> Void)?) {

    if let playerViewController = self.presentedViewController as? AVPlayerViewController {

        playerViewController.showsPlaybackControls = false
    }

    super.dismissViewControllerAnimated(flag, completion: completion)
}

基本的に、ユーザーが閉じるボタンをタップして、元の質問の投稿にある回避策を使用する瞬間を捉えています。

1
DevAndArtist

コードをダウンロードして確認しました。あなたは何も悪いことをしていません。 「Shows Playback Control」のチェックを外すことができるという事実は、問題がAVKitフレームワークにあることを示しているようです。 XIBファイルで値をfalseに設定してから、[self setShowsPlaybackControls:YES];viewDidAppear:と同じ結果になります。これは間違いなくApple=バグであり、バグレポートを報告する必要があります。

1
Danny Bravo

残念ながら、このバグはiOS 10.1にも存在します。とにかく、seekTimeを0に設定してビューコントローラーを表示しても、バグは存在しないことを確認しました。したがって、私の解決策は、プレーヤーを一時停止し、currentTimeを保持し、プレーヤーを0にシークし、コントローラーを提示し、完了時に以下を実行することです。保持された時間をシークして、もう一度再生します。

AVPlayer *player;
AVPlayerViewController *avPlayerController;
CMTime currentTime;

- (void)viewDidLoad {
    [super viewDidLoad];

    NSURL *videoURL = [NSURL URLWithString:@"https://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4"];
    player = [AVPlayer playerWithURL:videoURL];
    AVPlayerLayer *playerLayer = [AVPlayerLayer playerLayerWithPlayer:player];
    [self.playerView.layer addSublayer:playerLayer];
    playerLayer.frame = self.playerView.bounds;
    avPlayerController = [[AVPlayerViewController alloc] init];
    avPlayerController.player = player;

}

- (IBAction)fullScreen:(id)sender {
    [player pause];
    currentTime = player.currentTime;
    [player seekToTime:CMTimeMake(0, 1)];

    [self presentViewController:avPlayerController animated:YES completion:^{
        [avPlayerController.player seekToTime:currentTime];
        [avPlayerController.player play];
    }];
}
1
Marius Tanasoiu

これは、同じAVPlayerViewControllerインスタンスを(強い参照プロパティを使用して)2回目、3回目などに表示しようとすると発生し、プレーヤーのコントロールがリセットされない(つまり、進行状況が最初に表示されない)ときに発生します。

Progress bar not in 0:00

実際、同じシナリオに直面している場合は、[完了]をタップする前に、プログレスバーを最初にドラッグして、AVPlayerViewControllerをもう一度表示してみてください。その後、自動レイアウトの問題は消えるはずです!

したがって、AVPlayerViewControllerを閉じる前にコントロールをリセットすると、基本的にAutolayoutの問題(ちなみにAppleの問題)を修正できます。しかし、同じビデオを表示したい場合はどうでしょうか?私の場合、AVPlayerItemへの参照を保持したいと思います。

@property (strong, nonatomic) AVPlayerItem *playerItem;

しかし、私はこのクラッシュを起こしたくありません:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'An AVPlayerItem cannot be associated with more than one instance of AVPlayer'
*** First throw call stack:
(0x184035900 0x1836a3f80 0x18a254958 0x18a23fc14 0x100054a2c 0x188d5fe50 0x188d5fdcc 0x188d47a88 0x188d5f6e4 0x188d18294 0x188d58820 0x188d57e1c 0x188d284cc 0x188d26794 0x183fecefc 0x183fec990 0x183fea690 0x183f19680 0x185428088 0x188d90d90 0x1000eea78 0x183aba8b8)
libc++abi.dylib: terminating with uncaught exception of type NSException

したがって、私の回避策は、AVPlayerViewControllerをプッシュするたびにAVPLayerItemのコピーを作成することでした。その方法で、クラッシュと自動レイアウトの問題はなくなりました。ただし、プレーヤーを押すたびにビデオがリセットされます。

AVPlayerViewController *playerViewController = [AVPlayerViewController new];
playerViewController.player = [[AVPlayer alloc] initWithPlayerItem:self.playerItem.copy];
0
jomafer