Используйте ScrollView и GeometryReader для создания анимированного эффекта 3D-прокрутки
CardView
Начиная с карточек, мы создадим структурное представление, которое принимает цвет и число. Карты будут RoundedRectangles
с заливкой и Text
видом с числами, сложенными друг на друга в ZStack
.
У меня есть атрибут фона на RoundedRectangle
, который принимает белый цвет в качестве представления. Это потому, что я задаю цвета CardView
, у которых есть атрибуты непрозрачности со значением 0,3. Если вы используете цвета со значением непрозрачности 1.0, то цвет фона не нужен.
ContentView
ContentView
содержит массив цветов, которые мы отправляем в CardView
. Выберите свои цвета или создайте массив другого типа и заполните его содержимым, которое будет внутри ваших карточек:
В теле ContentView
нам понадобится GeometryReader
, чтобы определить количество отступов и интервалов, необходимых для нашего HStack
. Используйте ForEach
, чтобы заполнить карточки числами и цветами. Вставьте свой HStack
в ScrollView
:
3D-анимация карт
В нашем CardView
нам нужно знать maxX
нашего экрана. Мы можем получить его с помощью UIScreen
и сохранить в переменной. Вставьте ZStack
в GeometryReader
. Используйте атрибут rotation3DEffect
на ZStack
. Передайте значение maxX
, используя геометрический прокси, и вычтите из него значение maxX
, которое мы сохранили. Затем добавьте к нему половину значения maxX
, чтобы отцентрировать карту в центре экрана под углом 0 градусов. Разделите результат на -5 или вы можете поэкспериментировать с другими значениями, чтобы увидеть, как это повлияет на вашу анимацию.
Все сделано! Спасибо за прочтение.