проблема с вращающимся видом (и изменением размеров элементов внутри) в приложении ipad - PullRequest
0 голосов
/ 18 июля 2010

У меня кошмар с вращением на iPad. Я искал повсюду несколько уроков, но, похоже, ничего не подходит для того, чего я хочу. (Возможно, не в поисках нужной вещи ?!)

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

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

Мой вопрос: каков наилучший способ изменить размер представления. Я хотел просто уменьшить uiview, скажем, на 60%, и оно изменило ВСЕ в этом представлении с теми же 60%. Единственный способ увидеть, как это работает в данный момент - это создать два представления ... но это вдвое больше работы и обслуживания!

Я попытался поиграться со стрелками авторазмера в Интерфейсном конструкторе, но это, похоже, еще больше запутало!

Я полностью потерян здесь !! Спасибо за любую информацию

Ответы [ 2 ]

1 голос
/ 18 июля 2010

Проблема, с которой вы столкнулись, заключается в том, что размер экрана автоматически изменяется в соответствии с соотношением сторон экрана.На iPad в книжной ориентации размер экрана составляет 1024х768.После поворота в альбомную ориентацию источник также будет вращаться, и содержимое экрана будет перекошено или растянуто до 768x1024.

Вам нужно переопределить

-(void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation duration:(NSTimeInterval)duration

сообщение UIViewController вида, который вращается.Это сообщение вызывается внутри блока анимации вращения.Вы просто устанавливаете размер рамки ваших подпредставлений (кнопка) на то, что лучше для вас.Однажды у меня возникла проблема с вращением представления OpenGL.Содержание представления было растянуто при повороте на альбомную.Так как невозможно изменить какие-либо матрицы OpenGL в блоке анимации, единственное решение, которое я нашел, было сделать вид квадратичным и установить начало координат за пределами экрана (в направлении -x).Вам также необходимо переопределить сообщение, чтобы сбросить исходную точку над границами экрана (в направлении -y) в ландшафтном режиме, чтобы область просмотра находилась посередине экрана.Таким образом, вид сохранил свое соотношение.Какое бы решение ни было для вас наилучшим, переопределение этого сообщения должно сработать.

0 голосов
/ 15 декабря 2010

Вы пытались отключить свойство autoresizesSubviews в UIView? Это должно предотвратить любые изменения размера подпредставлений при изменении размера вашего представления.

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