Просмотр размеров после воспроизведения фильма в полноэкранном режиме - PullRequest
1 голос
/ 18 ноября 2011

У меня есть довольно стандартное навигационное приложение для iPhone, которое я разрабатываю, где на некоторых экранах есть кнопка, которая будет воспроизводить фильм с помощью MPMoviePlayerController в полноэкранном режиме.В верхней части окна есть панель навигации.Я вижу странное поведение с изменением размера вида после воспроизведения фильма.Было интересно, видел ли кто-нибудь еще это, и есть ли исправление.Вот что я вижу:

  • Я держу телефон в одной ориентации (книжная или альбомная)
  • Я запускаю фильм (он воспроизводится в полноэкранном режиме)
  • Я касаюсь экрана, чтобы скрыть элементы управления воспроизведением фильма
  • Я поворачиваю телефон в другую ориентацию (книжная / альбомная или наоборот)
  • Касаюсь экрана, чтобы вернуть элементы управления воспроизведением, а затем нажмите кнопку «Готово»

. На этом этапе исходный вид возвращается на экран в новой ориентации.Тем не менее, вид не имеет должного размера для размещения строки состояния в верхней части экрана.Строка состояния скрывает часть панели навигации.Поворот телефона в этот момент решает проблему.

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

Кто-нибудь знает, что может быть причиной этого?

Кроме того, это довольно легко воспроизвести.Я использую Xcode4.2 и 5.0 SDK.Если вы создаете новый проект только для iPhone с помощью шаблона «Приложение Master-Detail» и вносите эти изменения, вы видите, что проблема возникает:

Сначала добавьте следующий код в MasterViewController.m.

- (void) moviePlayBackDidFinish:(NSNotification*)notification
{
    MPMoviePlayerController *moviePlayer = [notification object];
    [[NSNotificationCenter defaultCenter] removeObserver:self name:MPMoviePlayerPlaybackDidFinishNotification object:moviePlayer];
    [moviePlayer.view removeFromSuperview];
    [moviePlayer release];
}

- (void) playStory
{
    NSURL *movieURL = [NSURL URLWithString:@"http://double-apps.com/thisisatest.m4v"];
    MPMoviePlayerController *moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:movieURL];

    // Register to receive a notification when the movie has finished playing.
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(moviePlayBackDidFinish:) name:MPMoviePlayerPlaybackDidFinishNotification object:moviePlayer];

    moviePlayer.shouldAutoplay = YES;
    [self.view addSubview:moviePlayer.view];
    [moviePlayer setFullscreen:YES animated:YES];
}

Затем замените содержимое метода didSelectRowAtIndexPath на [self playStory]:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    [self playStory];
}

Вот и все, запустите приложение, нажмите запись «Подробно» на главном экране, затемследуйте приведенной выше последовательности.

...