Автомакет и AVPlayerViewController

Я добавляю экземпляр AVPlayerViewController в UIView. UIView инициализируется через раскадровку. Я установил верхнее ограничение на верхний макет, а нижнее ограничение — на нижний макет. Когда приложение скомпилировано, представление имеет правильный размер, но смещено на 64 пикселя вниз (высота верхней панели навигации). Как мне это решить? Установка верхнего ограничения на 64 немного решает проблему, пока я не вернусь к представлениям, а затем оно все равно станет смещенным.

//AVPlayer object can direct its visual output to AVPlayer. AVPlayerVC is a AVPlayerViewController. You can add it via objects in bottom-right corner.
AVPlayerViewController *avPlayerVC=[[AVPlayerViewController alloc] init];
avPlayerVC.player=self.avPlayer;

[self addChildViewController:self.avPlayerVC];
[self.playerView addSubview:self.avPlayerVC.view];
self.avPlayerVC.view.frame = self.playerView.frame;

[avPlayerVC didMoveToParentViewController:self];

DLog(@"%@",NSStringFromCGRect(avPlayerVC.view.frame));
DLog(@"%@",NSStringFromCGRect(self.playerView.frame));
DLog(@"%@",NSStringFromCGRect(self.view.frame));

[self.avPlayerVC.player play];

введите здесь описание изображения

введите здесь описание изображения

Журнал:

[Line 95] {{0, 0}, {100, 100}}
[Line 97] {{0, 64}, {375, 554}}
[Line 99] {{0, 0}, {375, 667}}

person stackOverFlew    schedule 17.12.2016    source источник
comment
Просто установите ограничение вашего представления в viewwillappear()   -  person Himanshu Moradiya    schedule 17.12.2016
comment
Растяните вид видео под верхней панелью навигации, а затем добавьте верхнее ограничение (оно должно быть равно нулю и связано с верхним руководством по макету).   -  person Eugene Zaychenko    schedule 17.12.2016
comment
Спасибо Евгений! Велике спасибі!   -  person stackOverFlew    schedule 17.12.2016


Ответы (1)


Когда ограничения будут обновлены, будет вызван метод viewDidLayoutSubviews. Установите границы вида игрока как фрейм avplayer.

-(void)viewDidLayoutSubviews { [super viewDidLayoutSubviews]; [self.avplayer.frame setFrame:self.playerView.bounds]; }

person iTamilan    schedule 17.12.2016