закрыть UIPopover на вращение с анимацией затухания - PullRequest
1 голос
/ 03 мая 2011

В приложениях Apple Pages и Numbers есть всплывающие окна (для «инструментов» и т. Д.), Которые закрываются с прекрасным эффектом затухания при повороте устройства.Я пытаюсь воссоздать это, но мои всплывающие окна всегда, кажется, закрываются мгновенно, поэтому анимация вращения выглядит не так гладко.В настоящее время я использую:

- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation duration:(NSTimeInterval)duration
{    
    [toolsPopoverController dismissPopoverAnimated:YES];
}

Кто-нибудь знает, как лучше всего добиться того же эффекта, что и в Pages / Numbers?

Спасибо!

Ответы [ 2 ]

4 голосов
/ 14 июня 2011

На основе документации для UIPopoverController (выделение добавлено):

Если пользователь поворачивает устройство, когда всплывающее окно видно, контроллер всплывающего окна скрывает всплывающее окно и затем показывает его сновав конце вращения .Контроллер всплывающих окон пытается расположить поповер надлежащим образом для вас, но вам, возможно, придется представить его снова или скрыть его в некоторых случаях.Например, при отображении из элемента панели кнопок контроллер поповер автоматически регулирует положение (и, возможно, размер) панели для учета изменений в положении элемента кнопки панели.Тем не менее, если вы удалите элемент панели кнопок во время поворота, или если вы представили поповер из целевого прямоугольника на виде, контроллер поповер не будет пытаться переместить поповер.В этих случаях вы должны вручную скрыть всплывающее окно или снова представить его из соответствующей новой позиции.Вы можете сделать это в методе didRotateFromInterfaceOrientation: контроллера представления, который вы использовали для представления всплывающего окна.

Может показаться, что вызов [toolsPopoverController dismissPopoverAnimated: YES] в willAnimateRotationToInterfaceOrientation: метод, который вы закрываете с анимацией, пока всплывающее окно скрыто во время перехода вращения.

Если вы вызываете метод dismissPopoverAnimated: YES в методе didRotateFromInterfaceOrientation: вместо этого, поведение по умолчанию с поповером в новой позиции должно присутствовать до вызова анимации отклонения.

Если анимация по умолчанию все еще не соответствует тому, что вы ищете в данный момент, я бы создал пользовательский блок анимации и управлял бы затуханием или явно изменял размеры в соответствии с вашими потребностями.

1 голос
/ 07 ноября 2011

Это сработало для меня, вызвав dismissPopoverAnimated: from willRotateToInterfaceOrientation: duration:.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...