Чистые переходы авторотации в подкачке страниц UIScrollView

У меня есть подкачка страниц UIScrollView в который пользовательские страницы горизонтально через изображения, как Photos.app Apple. Это работает, но теперь я пытаюсь добавить поддержку вращения.

Я имею представление, вращающееся хорошо, и сумел установить contentSize, границы и кадры подпредставлений правильно для адаптации к различным ориентациям. Таким образом, прежде и после вращения, все в порядке.

Однако сами переходы являются неловкими. Первое изображение вращается отлично, как будто ось вращения находится в мертвой точке изображения (scrollview кадр). Второе изображение "качается" в том, потому что ось вращения находится в том же месте: центр первого изображения. Чем дальше я добираюсь из первого изображения, тем быстрее "колебание".

Я могу, вероятно, замаскировать это путем накладывания непрозрачного UIView перед вращением и сокрытия его после. Но это - взлом. Должен быть изящный способ сделать это...

12
задан skaffman 23 July 2010 в 21:46
поделиться

2 ответа

Честно говоря, я не знаю, что вы делаете, поскольку вы вообще мало что нам показали.

Но!

Я создал пример проекта с несколькими представлениями в прокручиваемом представлении, и он работает нормально. Не стесняйтесь разбирать его на части, как вам угодно. Это работает путем создания 5 представлений и добавления их в представление прокрутки. Затем, после того как эти представления установлены в первый раз, и при каждом повороте приложения, он вызывает мой метод alignSubviews, чтобы расположить их в нужных местах страницы и сделать их того же размера, что и вид прокрутки, одновременно обновляя contentSize вида прокрутки. Перед началом ротации отслеживается, на какой странице в данный момент находится представление прокрутки, а затем во время ротации оно сбрасывается на эту страницу (поскольку размер страницы должен измениться).

Скачать "Rotolling"!

скриншот http://cl.ly/43de79be29c5a03a1775/content

40
ответ дан 2 December 2019 в 03:11
поделиться

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

Поскольку вы не поделились кодом, следующее - просто предположение. Предположительно, вы применяете вращение и перевод. Это звучит так, как будто вы вращаете содержимое UIScrollView. Сделать это правильно будет непросто. Трудно сказать что-то определенное без кода, но если у вас только 1 поворот и 1 перевод, вы делаете это неправильно. Вам нужно перевести текущий вид в точку поворота, повернуть и перевести обратно. В противном случае перевод будет частью вращения (отсюда и большой размах).

Лучше вращать сам UIScrollView. Он всегда будет находиться в определенном месте (а именно: на экране) с определенным центром. Содержимое будет вращаться вместе с ним.

1
ответ дан 2 December 2019 в 03:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: