A UIViewControler
содержит UIScrollView
, который содержит три разных страницы.При запуске центральная страница отображается с парой других представлений, представляющих два столбца контента.Эти представления содержимого являются подпредставлениями ScrollView, чтобы иметь возможность свободно перемещаться между различными страницами.
Если пользователь прокручивает на левую страницу, некоторые представления содержимого (зеленые в макете) должны перейти к этому.страницы (анимированные), в то время как другие виды, которые не были видны до этого, перемещаются (например, зеленый кружок внизу)Ход анимации / движения должен контролироваться позицией прокрутки / прогрессом.
Если пользователи прокручивают назад к центру, все отображается как при запуске.При прокрутке вправо другие виды (красные) перемещаются на правую страницу (анимированные), и другие виды становятся видимыми.
Как это можно решить?
Конечно, можно было бы использовать scrollViewDidScroll:
для обнаружения изменений ScrollView, вычисления смещения и перемещения видов путем обновления ихограничения. Но это был бы абсолютный кошмар.
Представления не перемещаются линейно, а меняют относительное положение друг относительно друга и т. Д. Выполнение этого путем изменения некоторых констант ограничения не работает, не так ли?
Итак, как реализовать такие движения вида и как их анимировать?
Было бы идеально, если бы я мог определить один набор макетов / ограничений для начальной позиции,один макет для левой страницы и один макет для правой страницы и iOS SDK каким-то образом анимируют переходы между этими макетами.
Это можно сделать путем переключения между различными наборами ограничений в анимационном блоке UIView
, ноэто позволит только полностью анимировать, например, от "layout cente" до "layout left".Но в этом случае анимация должна контролироваться прокруткой: если левая страница прокручивается на 50% в ее окончательное положение, то представления контента должны быть на 50% между их расположением по центру и левым расположением.
Возможно ли это как-нибудь?
Редактировать:
Красных рамок на виде в центре последнего изображения быть не должно.Ящики перенесены на правую страницу.