Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Самвел Меджлумян – Выходные с Лотти
Search
CocoaHeads
December 22, 2017
170
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Самвел Меджлумян – Выходные с Лотти
CocoaHeads
December 22, 2017
More Decks by CocoaHeads
See All by CocoaHeads
Тесты: Повторение. Виктор Суриков
cocoaheads
0
100
Sign In with Apple (client + server). Петр Третьяков
cocoaheads
0
300
Эволюция антипаттернов в Java и Kotlin. Михаил Горюнов
cocoaheads
0
190
Рефакторинг в условиях быстрорастущего стартапа. Егор Фесенко
cocoaheads
0
76
Make Experiments Great Again, или Как iOS Браузер А/Б тестирование улучшал
cocoaheads
0
140
Лотерея в приложении: отрисовка, анимация и никакого мошенничества
cocoaheads
0
110
Микроинтеракции в iOS
cocoaheads
0
260
SceneKit на практике
cocoaheads
0
150
Пишем под iOS на Flutter
cocoaheads
0
170
Featured
See All Featured
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
28
3.6k
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
11k
The #1 spot is gone: here's how to win anyway
tamaranovitovic
3
1.1k
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.4k
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
210
Build your cross-platform service in a week with App Engine
jlugia
234
19k
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
570
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
190
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.9k
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
680
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
1
1.5k
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
230
Transcript
vk/telegram/github: @smejl Выходные с Лотти
План доклада ❖ Про жизнь ❖ Инструменты в iOS ❖
Про Лотти ❖ Мой кейс и проблемы ❖ Альтернативы и выводы 2
Анимация 3
– Неизвестный автор “Красивая цитата про то, что движение –
это жизнь”
None
Motion Design 6 medium.com/ux-in-motion/creating-usability-with-motion-the-ux-in-motion-manifesto-a87a4584ddc
Зачем ❖ Привлечь внимание к объекту ❖ Показать сценарий ❖
Показать переходы ❖ Продемонстрировать завершённость 7
Анимация как часть UX ❖ Имеют конкретную цель ❖ Являются
частью вашего UI ❖ Не выбиваются и не раздражают 8
Анимационные инструменты в iOS 9
OpenGL ❖ Добавить OpenGLES и QuartzCore ❖ Установить LayerClass для
вашего view как CAEAGLLayer ❖ Создать OpenGL context ❖ Создать буфер для рендеринга ❖ Создать буфер кадра ❖ Определить метод render ❖ … 10
11
Анимационные инструменты в iOS 12
Александр Зимин – Анимация как средство самовыражения 13
CABasicAnimation 14
15
16 func positionAnimation(from: CGPoint, to: CGPoint) -> CABasicAnimation { let
animation = CABasicAnimation(keyPath: "position") animation.fromValue = from animation.toValue = to animation.repeatCount = .infinity animation.autoreverses = true animation.duration = 0.5 return animation }
CAKeyFrameAnimation 17 func shake() { let shake: CAKeyframeAnimation = CAKeyframeAnimation(keyPath:
"transform") shake.values = [NSValue(caTransform3D: CATransform3DMakeTranslation(-6.0, 0.0, 0.0)), NSValue(caTransform3D: CATransform3DMakeTranslation(6.0, 0.0, 0.0))] shake.autoreverses = true shake.repeatCount = 2.0 shake.duration = 0.07 self.layer.add(shake, forKey: "shake") }
CATransition 18 if animated { let animation = CATransition() animation.type
= kCATransitionFade animation.duration = AnimationDuration.normal layer.add(animation, forKey: nil) }
CAAnimationGroup 19 let positionAnimation = propertyAnimation(path: “position", duration: duration, toValue:
position) let opacityAnimation = propertyAnimation(path: "opacity", duration: duration, toValue: opacity) let animationGroup = CAAnimationGroup() animationGroup.animations = [positionAnimation, opacityAnimation] animationGroup.duration = duration layer.add(animationGroup, forKey: nil)
Hello, Lottie! 20
Adobe After Effects 21
www.lottiefiles.com 22
Просмотра на девайсе 23 https://itunes.apple.com/us/app/lottie-preview/id1231821260?mt=8
24
25
26
Зачем ❖ Размер анимации ❖ Мутация на лету ❖ Ресайз
❖ Интеграция с backend ❖ Меньше рутины при разработке 27
28
29
Мы так не хотим ❖ Долго ❖ Больно ❖ Неоправданно
30
31
С чем мы столкнулись ❖ Нужно доработать напильником ❖ Неподдерживаемые
эффекты ❖ Большой JSON - зло 32
Альтернативы ❖ Делать всё ручками ❖ Facebook Keyframes ❖ Gifs
❖ Извращение 33
–iOS разработчик “Цитата о правильности выбора в жизни iOS разработчика”
vk/telegram/github: @smejl