Avplayer工作正常。但我得到了这个错误。如果我禁用显示播放控件,完美无误地工作。但我不能这样做,因为我需要它。我包含了控制台调试日志和其他代码。
感谢。
2015-11-09 06:35:11.019 youapp[6798:2785361] 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:0x7f8164b96f20 h=-&- v=-&- _UIBackdropContentView:0x7f81648b0510.width == _UIBackdropView:0x7f81648af200.width>",
"<NSLayoutConstraint:0x7f8164986a20 H:|-(0)-[UIView:0x7f8164985420] (Names: '|':UIView:0x7f816256e810 )>",
"<NSLayoutConstraint:0x7f8164986a70 H:[UIView:0x7f8164985420]-(0)-| (Names: '|':UIView:0x7f816256e810 )>",
"<NSLayoutConstraint:0x7f8164985ed0 H:|-(0)-[UIView:0x7f816256e810] (Names: '|':AVPlayerView:0x7f8164976610 )>",
"<NSLayoutConstraint:0x7f8164985f40 H:[UIView:0x7f816256e810]-(0)-| (Names: '|':AVPlayerView:0x7f8164976610 )>",
"<NSLayoutConstraint:0x7f8164b66d80 H:|-(0)-[UIView:0x7f81648b01e0] (Names: '|':_UIBackdropContentView:0x7f81648b0510 )>",
"<NSLayoutConstraint:0x7f8164b66dd0 H:[UIView:0x7f81648b01e0]-(0)-| (Names: '|':_UIBackdropContentView:0x7f81648b0510 )>",
"<NSLayoutConstraint:0x7f8164b66570 H:|-(0)-[_UIBackdropView:0x7f81648af200] (Names: '|':UIView:0x7f81648a3900 )>",
"<NSLayoutConstraint:0x7f8164b665c0 H:[_UIBackdropView:0x7f81648af200]-(0)-| (Names: '|':UIView:0x7f81648a3900 )>",
"<NSLayoutConstraint:0x7f8164b662b0 H:|-(0)-[UIView:0x7f81648a3900] (Names: '|':AVAlphaUpdatingView:0x7f81648a3790 )>",
"<NSLayoutConstraint:0x7f8164b66300 H:[UIView:0x7f81648a3900]-(0)-| (Names: '|':AVAlphaUpdatingView:0x7f81648a3790 )>",
"<NSLayoutConstraint:0x7f8164b69fc0 H:|-(14)-[AVButton:0x7f81648b0dd0](LTR) (Names: '|':UIView:0x7f81648b01e0 )>",
"<NSLayoutConstraint:0x7f8164b976d0 H:[AVButton:0x7f81648b0dd0]-(15)-[UILabel:0x7f8164a8aad0'0:00'](LTR)>",
"<NSLayoutConstraint:0x7f8164b97910 H:[UILabel:0x7f8164a8aad0'0:00']-(12)-[AVScrubber:0x7f8164ac0b50](LTR)>",
"<NSLayoutConstraint:0x7f8164b97960 AVScrubber:0x7f8164ac0b50.right == UILabel:0x7f8164ade4a0'--:--'.left - 12>",
"<NSLayoutConstraint:0x7f8164b97e20 UILabel:0x7f8164ade4a0'--:--'.right == AVButton:0x7f8164adf1a0.left - 15>",
"<NSLayoutConstraint:0x7f8164b97ec0 AVButton:0x7f8164adf1a0.right == AVButton:0x7f8164994ad0.left - 10>",
"<NSLayoutConstraint:0x7f8164b97a00 AVButton:0x7f8164994ad0.right == AVButton:0x7f8164969690.left - 10>",
"<NSLayoutConstraint:0x7f8164b98150 AVButton:0x7f8164969690.right == UIView:0x7f81648b01e0.right - 14>",
"<NSLayoutConstraint:0x7f8164af4520 H:|-(0)-[AVAlphaUpdatingView:0x7f81648a3790] (Names: '|':UIView:0x7f8164985420 )>",
"<NSLayoutConstraint:0x7f8164af4570 H:[AVAlphaUpdatingView:0x7f81648a3790]-(0)-| (Names: '|':UIView:0x7f8164985420 )>",
"<NSLayoutConstraint:0x7f8164b86f20 'UIView-Encapsulated-Layout-Width' H:[AVPlayerView:0x7f8164976610(100)]>"
)
Will attempt to recover by breaking constraint
<NSLayoutConstraint:0x7f8164b976d0 H:[AVButton:0x7f81648b0dd0]-(15)-[UILabel:0x7f8164a8aad0'0:00'](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-11-09 06:37:08.097 [warn][tid:com.facebook.React.JavaScript] 'devtools socket closed'
#import "VideoPlayerView.h"
#import "RCTRootView.h"
@interface VideoPlayerView ()
@property (nonatomic, retain) AVPlayerViewController *avPlayerViewcontroller;
@property (nonatomic, retain) UIView *view;
@end
@implementation VideoPlayerView
{
UIView *_reactView;
}
- (instancetype)init
{
if ((self = [super init])) {
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(deviceOrientationChange:) name:@"UIDeviceOrientationDidChangeNotification" object:nil];
}
return self;
}
- (void)dealloc
{
[[NSNotificationCenter defaultCenter] removeObserver:self];
}
- (void)setUrl:(NSString *)url {
AVPlayerViewController *playerViewController = [[AVPlayerViewController alloc] init];
playerViewController.player = [AVPlayer playerWithURL:[NSURL URLWithString: url]];
self.avPlayerViewcontroller = playerViewController;
[self.avPlayerViewcontroller setShowsPlaybackControls:YES];
self.avPlayerViewcontroller.videoGravity = AVLayerVideoGravityResizeAspect;
[self addSubview:playerViewController.view];
self.autoresizesSubviews = TRUE;
[self.avPlayerViewcontroller.player play];
}
- (void)layoutSubviews
{
[super layoutSubviews];
self.avPlayerViewcontroller.view.frame = self.bounds;
}
- (void)viewDidDisappear:(BOOL)animated {
NSLog(@"test");
}
- (void)deviceOrientationChange:(NSNotification *)notification
{
UIDeviceOrientation orientation = [[UIDevice currentDevice] orientation];
switch (orientation) {
case UIDeviceOrientationPortrait:
case UIDeviceOrientationPortraitUpsideDown:
self.avPlayerViewcontroller.videoGravity = AVLayerVideoGravityResizeAspect;
break;
case UIDeviceOrientationLandscapeLeft:
case UIDeviceOrientationLandscapeRight:
self.avPlayerViewcontroller.videoGravity = AVLayerVideoGravityResizeAspectFill;
break;
default:
self.avPlayerViewcontroller.videoGravity = AVLayerVideoGravityResizeAspect;
break;
}
}
@end
答案 0 :(得分:-1)
每次布置子视图时都不要设置视图控制器的视图;之前,当然,但之后没有任何意义。