изменение подпредставлений при вращении на ios - PullRequest
3 голосов
/ 19 апреля 2011

Мне нужен контроллер вида (на ipad), чтобы разделить два режима, один в портретном и один в альбомном.На самом деле, я очень хочу имитировать функциональность UISplitViewController, но я хочу использовать его не как контроллер представления верхнего уровня.Помимо рекомендаций HIG, у меня есть общая проблема, с которой, я думаю, столкнется любой, кто переключает виды между ориентациями.

1) Чтобы обеспечить плавные переходы между видами, я хотел бы вызывать изменения моего вида (и анимации).) inside willRotateToInterfaceOrientation: продолжительность вместо метода didRotateToInterfaceOrientation.Проблема в том, что на этом этапе рамка просмотра и границы еще не изменились на новые, поэтому вам в конечном итоге придется устанавливать рамку вручную, например:

subview.frame = CGRectMake(0,0,320,768);

вместо чего-то более приятного, возможно,:

subview.frame = CGRectMake(0,0,320, self.view.frame.height);

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

subview.frame = self.view.frame; //because then you'd have to always specify the exact rect.

У кого-нибудь есть что-нибудь, что можно предложить по этому поводу?

Спасибо!

1 Ответ

5 голосов
/ 19 апреля 2011

Попробуйте вместо этого использовать willAnimateRotationToInterfaceOrientation:duration:.

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

Если у вас нет (или вы не можете) правильно настроить маски автоматического изменения размера, у вас уже должен быть код для обработки изменений размера в методе layoutSubviews основного представления.Опять же, вам не нужно беспокоиться о том, был ли изменен размер основного вида или нет.

...