6

Я пытаюсь представить VC поверх VC, используя UIModalPresentationCurrentContext, чтобы увидеть представление позади него. Приведенный ниже код работает:UIModalPresentationCurrentContext - методы вращения, не вызываемые

UIViewController *transparentViewController = [[UIViewController alloc] init]; 
self.modalPresentationStyle = UIModalPresentationCurrentContext; 
[self presentViewController:transparentViewController animated:NO completion:^{ 
}]; 

Однако, когда я повернуть устройство после того, как VC была отодвинута вращение выглядит совершенно перепутались. Вместо того, чтобы чисто вращаться, он неловко подтягивает взгляд, чтобы соответствовать новой ориентации.

Кроме того, когда я подклассифицирую transparentViewController, я обнаружил, что его методы viewwillautorotate не вызываются! (Несмотря на то, что он вращается в своем запутанном способе анимации)

Является ли стиль UIModalPresentationCurrentContext не предназначенным для вращения? Во всяком случае, вокруг? Кто-нибудь еще сталкивается с этой проблемой?

+0

Вы нашли решение на этом? Я столкнулся с той же проблемой. – stonemonk

+0

То же самое здесь. Решение? –

ответ

0

Я считаю, что проблема связана с тем, что контроллер исходного вида не может вращаться, поэтому ваш контроллер модального просмотра также заблокирован от вращения. Чтобы обойти это, вы можете сделать оригинал UIViewControllerCALAyer в UIImage с использованием метода renderInContext. Затем вы можете поместить это в UIImageView в нижней части своей иерархии представлений в вашем модульном контроллере. Это приведет к тому, что диспетчер представлений будет прозрачным, так как вы видите, что было за ним в поддельном статическом изображении. Затем, когда вращается UIViewController, вы можете вручную применить CGAffineTransform к UIImageView, чтобы оставить фон на месте, в то время как содержимое поверх него свободно вращается.

+0

D, спасибо за ответ. Первоначальный контроллер представления в этом случае способен вращаться, однако он ведет себя одинаково независимо от того, является ли это или не разрешено вращаться. Решение, которое вы предлагаете, является хорошим, однако, что, если вид обновлений? Было бы лучше использовать прозрачность. Кроме того, не будет ли CGAffineTransform на скриншоте «вращаться», чтобы компенсировать вращение устройства, показывая анимацию, которая не произойдет, если фон явно не может вращаться? –

+0

А я неправильно понял, что контроллер исходного вида способен вращаться. Тогда я не уверен, как решить проблему. – DHamrick

Смежные вопросы