iOS Унифицированные масштабные подпредставления с суперпредставлением - PullRequest
3 голосов
/ 19 ноября 2011

У меня есть приложение, которое позволяет пользователю перетаскивать представления на экран в нескольких ориентациях. Допустим, я нахожусь в портретном режиме, и мой суперпредставление 768x1024. Допустим, я перетаскиваю 10 разных предметов на этот суперпредставление. Эти элементы масштабируются, поворачиваются и т. Д. Затем я поворачиваю устройство, и мое суперпредставление уменьшается до 576x768. Как мне получить все мои подпредставления, чтобы они сохраняли свою позицию и трансформировались относительно нового меньшего размера? Поэтому, по сути, мое суперпредставление и все его подпредставления должны выглядеть точно так же, как в портретной ориентации, за исключением того, что все было уменьшено.

А также, что, если я нахожусь в пейзаже, и все «сжимается» вниз, а затем я перетаскиваю другой вид и сужаю его, чтобы он хорошо подходил. Мне нужно, чтобы этот новый вид увеличивался в нужном месте и размере, когда устройство поворачивается обратно в портрет

Ответы [ 2 ]

4 голосов
/ 19 ноября 2011

Здесь проще всего использовать свойство transform вашего представления.В этом случае вы бы запретили автоматическое изменение размера представления при вращении и использовали что-то вроде метода willAnimateRotationToInterfaceOrientation:duration: контроллера вашего представления, чтобы установить преобразование для вашего суперпредставления.Вы можете создать преобразование с CGAffineTransformMakeScale, которое будет увеличивать или уменьшать весь ваш контент;вы, вероятно, захотите один для пейзажа и просто использовать нулевое преобразование для портрета (или наоборот).

Это усложнит перетаскивание новых представлений в ваше суперпредставление, так как оно трансформируется, но как только у вас появятся представления, они должны вести себя правильно при изменении размера.Для новых представлений вам нужно будет вычислить (возможно, используя convertRect: fromView: метод UIView), каким будет прямоугольник после добавления нового подпредставления.

0 голосов
/ 22 марта 2017

Вы также можете напрямую переопределить layoutSubviews() вашего представления и назначить преобразования вашего подпредставления на основе измерения вашего представления.Таким образом, вы все равно можете получить преимущества от использования Auto Layout с вашим представлением и, возможно, с другими элементами UI, когда вы настраиваете кадры подпредставления и / или преобразуете вручную без Auto Layout.

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