iOS-MPMoviePlayerController сбрасывает преобразование представления при повторении

Использование MPMoviePlayerController.посмотреть в фоновом режиме (думаю spotify). Пользователь может нажать login или signup и они принимаются к соответствующему viewController, который имеет четкий фон, чтобы moviePlayer.вид остается фоном (т. е. пользователь продолжает видеть видео независимо от текущего активного viewController) на протяжении всего потока.

На некоторых viewControllers форма должна быть поднята так, чтобы клавиатура не закрывала поле. Я делаю это с помощью преобразования.

Фоновое видео moviePlayer настроено на повторение, поэтому видео находится в непрерывном цикле. Каждый раз, когда видео сбрасывается (состояние видео переходит от 1 до 2 — приостановлено для воспроизведения), преобразование сбрасывается в дочерних viewControllers. Моя первоначальная мысль состояла в том, что представление перерисовывается, но это не похоже на случай, основанный на журналах (я поставил nslogs в drawRect представлений, но это только когда-либо вызывалось один раз при создании экземпляра).

Кто-нибудь сталкивался с этим?

Моя настройка в корневом viewController:

// lazy load moviePlayer
-(MPMoviePlayerController *)moviePlayer
{
    if (_moviePlayer) return _moviePlayer;

    NSURL *videoURL = [[NSBundle mainBundle] URLForResource:@"resources.bundle/videos/auth_bg" withExtension:@"mp4"];
    _moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:videoURL];
    _moviePlayer.controlStyle = MPMovieControlStyleNone;
    _moviePlayer.scalingMode = MPMovieScalingModeAspectFill;
    _moviePlayer.repeatMode = MPMovieRepeatModeOne;
    _moviePlayer.shouldAutoplay = true;

    return _moviePlayer;
}

-(void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];
    self.moviePlayer.view.frame = self.view.frame;
    self.moviePlayer.view.hidden = false;
    // 'still' is an imageView of the first frame to show while video loading
    [self.navigationController.view insertSubview:self.moviePlayer.view aboveSubview:still];
}

1 ответ

  1. Я подозреваю, что это связано с Autolayout-я нашел несколько других вопросов, где были сброшены представления (один пример здесь: https://stackoverflow.com/a/17849584/1542275 ) … Мое решение состояло в том, чтобы настроить константы ограничения компоновки в отличие от преобразования координат вида. Сейчас все остается на своих местах.

    Все сказанное, я все еще не уверен, почему перезапуск видео сбрасывает преобразования.