У меня есть универсальное приложение для iPad/iPhone, которое позволяет пользователю смотреть видео, которое затем можно развернуть в полноэкранный режим.
Я реализовал (void) willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation duration:(NSTimeInterval)duration
, и в этом методе я выполняю различные вызовы setFrame для своих элементов представления в зависимости от того, находятся ли они в альбомной или портретной ориентации.
Это кажется, что все работает нормально при обычном использовании, то есть вращение вперед и назад работает нормально.
Но если пользователь начинает в портретном режиме, запускает видео, переходит в полноэкранный режим, поворачивает в альбомную ориентацию, а затем видео останавливается - - размеры элементов часто не изменяются должным образом. Они кажутся такими же, как если бы они были в портретном режиме.
Если я затем перехожу в портретный режим, а затем возвращаюсь в альбомный, вид сбрасывается правильно.
Странно часть, у меня есть реализация ted (void)exitedFullscreen:(NSNotification*)notification
и там я распечатываю ориентацию, и она видна правильно. Я также вызываю свой код для сброса элементов представления на основе текущей ориентации, и у меня все еще есть эта проблема.
Другая связанная с этим проблема заключается в том, что иногда при работе с вращением мои представления оказываются слишком далеко вверху экрана, на самом деле попадая под строку состояния в верхней части устройства.
ПравитьВот последний пример. Я поворачиваюсь в ландшафтный режим во время полноэкранного воспроизведения видео, а затем, когда я выхожу из полноэкранного видео, вы можете увидеть проблему с панелью навигации в верхней части экрана.