Воспроизведение анимированного эффекта временной шкалы, как в приложении Google plus ios

Меня очень смущает 3D-анимация плиток на временной шкале в приложении Google Plus для iOS. Я работаю над этим, но не могу добиться успеха в создании идеальной 3D-анимации объектов. У меня есть некоторые простые знания об анимации с блоками для элементов UIView. Но я не знаю, как применить 3D-переход.

Не могли бы вы помочь мне?

Я нашел это, но это для Android, а ответы для js. Что-то похожее на это.

введите здесь описание изображения


person mayuur    schedule 07.01.2013    source источник
comment
Вы можете использовать анимацию CSS3. Я думаю, это возможно в iOS.   -  person Ashutosh Dave    schedule 09.01.2013
comment
@SilentKiller ты на ТАК??? :O Кстати, я думал сделать это только через нативные API....   -  person mayuur    schedule 09.01.2013
comment
Нет... но я знаю, что вы можете использовать переходы CSS3 в приложении для iOS.   -  person Ashutosh Dave    schedule 10.01.2013
comment
Нет, я не хочу этого через CSS3. Я знаю, что это можно сделать с помощью настроек CATransform3D или CALayer, но не могу пройти через это...   -  person mayuur    schedule 10.01.2013


Ответы (2)


Сделал это сам через CATransform3D после понимания ответа Николы...

ССЫЛКА на гитхаб:

https://github.com/mayuur/GooglePlusiOSUIViewAnimationSdk

person mayuur    schedule 10.01.2013
comment
Да, спасибо большое за начало! На самом деле я не понимаю код, который вы разместили ранее. Итак, я продолжил и разместил еще один вопрос на Stack, а затем получил некоторые разъяснения о том, что это за вещи, сделал свои собственные вещи и заставил их работать! :) - person mayuur; 11.01.2013
comment
Эй, как вы реализовали это в нескольких представлениях... У вас есть еще код, который вы можете опубликовать? - person Jatin; 30.07.2013
comment
@Jatin У меня больше нет кода, но вы можете добавить свои взгляды в дальнее положение, а затем начать давать им анимацию, чтобы они пришли в их фактическое положение. таким образом, вы могли бы сделать это! - person mayuur; 31.07.2013

Вот как вы можете сделать подобное 3D-преобразование. Просто не забудьте настроить значение вращения.

CGFloat rotation = ??;
CATransform3D transform = CATransform3DIdentity;
transform.m34 = 1.0 / -1000.0;
transform = CATransform3DRotate(transform, rotation, 0.0f, 1.0f, 0.0f);
myView.transform3D = transform;

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

person Nikola Kirev    schedule 10.01.2013
comment
Не могли бы вы объяснить больше? Я не получил большого представления об этом. - person mayuur; 10.01.2013
comment
Да, я понял, что эти преобразования будут применяться к myView. Но я не понимаю, на каком основании вы устанавливаете значение m34? Также аргументы CATransform3DRotate. Я их тоже не понимал. - person mayuur; 10.01.2013
comment
Правильно! Ну, у меня не было такого большого опыта с 3D-преобразованиями. Я создал приведенный выше код как часть учебника, где представления анимируются так, как вы хотите. Что касается аргументов CATransform3DRotate , я могу процитировать документацию: CATransform3D CATransform3DRotate (CATransform3D t, CGFloat angle, CGFloat x, CGFloat y, CGFloat z) Повернуть 't' на 'угол' в радианах вокруг вектора '(x, y, z)' и вернуть результат. Если вектор имеет нулевую длину, поведение не определено: t' = вращение (угол, x, y, z) * t. Извините, что не смог быть более полезным. - person Nikola Kirev; 10.01.2013