Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Самвел Меджлумян – Выходные с Лотти
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
CocoaHeads
December 22, 2017
180
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
110
Sign In with Apple (client + server). Петр Третьяков
cocoaheads
0
320
Эволюция антипаттернов в Java и Kotlin. Михаил Горюнов
cocoaheads
0
200
Рефакторинг в условиях быстрорастущего стартапа. Егор Фесенко
cocoaheads
0
80
Make Experiments Great Again, или Как iOS Браузер А/Б тестирование улучшал
cocoaheads
0
140
Лотерея в приложении: отрисовка, анимация и никакого мошенничества
cocoaheads
0
120
Микроинтеракции в iOS
cocoaheads
0
260
SceneKit на практике
cocoaheads
0
150
Пишем под iOS на Flutter
cocoaheads
0
180
Featured
See All Featured
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
12k
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
300
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
530
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
3
3.8k
Fashionably flexible responsive web design (full day workshop)
malarkey
409
67k
[Rails World 2026] Durable orchestration on Rails: from continuation to workflow
palkan
1
310
KATA
mclloyd
PRO
35
16k
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
2
2.2k
What the history of the web can teach us about the future of AI
inesmontani
PRO
1
710
Building Adaptive Systems
keathley
44
3.2k
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
3
4.3k
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