У меня есть подкачка страниц UIScrollView в который пользовательские страницы горизонтально через изображения, как Photos.app Apple. Это работает, но теперь я пытаюсь добавить поддержку вращения.
Я имею представление, вращающееся хорошо, и сумел установить contentSize, границы и кадры подпредставлений правильно для адаптации к различным ориентациям. Таким образом, прежде и после вращения, все в порядке.
Однако сами переходы являются неловкими. Первое изображение вращается отлично, как будто ось вращения находится в мертвой точке изображения (scrollview кадр). Второе изображение "качается" в том, потому что ось вращения находится в том же месте: центр первого изображения. Чем дальше я добираюсь из первого изображения, тем быстрее "колебание".
Я могу, вероятно, замаскировать это путем накладывания непрозрачного UIView перед вращением и сокрытия его после. Но это - взлом. Должен быть изящный способ сделать это...
Честно говоря, я не знаю, что вы делаете, поскольку вы вообще мало что нам показали.
Но!
Я создал пример проекта с несколькими представлениями в прокручиваемом представлении, и он работает нормально. Не стесняйтесь разбирать его на части, как вам угодно. Это работает путем создания 5 представлений и добавления их в представление прокрутки. Затем, после того как эти представления установлены в первый раз, и при каждом повороте приложения, он вызывает мой метод alignSubviews
, чтобы расположить их в нужных местах страницы и сделать их того же размера, что и вид прокрутки, одновременно обновляя contentSize
вида прокрутки. Перед началом ротации отслеживается, на какой странице в данный момент находится представление прокрутки, а затем во время ротации оно сбрасывается на эту страницу (поскольку размер страницы должен измениться).
Похоже, что вы применяете магию, необходимую для получения повернутой версии на экране в нужном месте, неправильным способом.
Поскольку вы не поделились кодом, следующее - просто предположение. Предположительно, вы применяете вращение и перевод. Это звучит так, как будто вы вращаете содержимое UIScrollView
. Сделать это правильно будет непросто. Трудно сказать что-то определенное без кода, но если у вас только 1 поворот и 1 перевод, вы делаете это неправильно. Вам нужно перевести текущий вид в точку поворота, повернуть и перевести обратно. В противном случае перевод будет частью вращения (отсюда и большой размах).
Лучше вращать сам UIScrollView
. Он всегда будет находиться в определенном месте (а именно: на экране) с определенным центром. Содержимое будет вращаться вместе с ним.