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
330
Эволюция антипаттернов в 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
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
600
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.6k
Automating Front-end Workflow
addyosmani
1369
210k
The Curious Case for Waylosing
cassininazir
1
570
[RailsConf 2023] Rails as a piece of cake
palkan
59
7.1k
What's in a price? How to price your products and services
michaelherold
247
13k
Leo the Paperboy
mayatellez
10
2.4k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
33
5.2k
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
2
950
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
4
4.4k
The Cult of Friendly URLs
andyhume
79
7k
Principles of Awesome APIs and How to Build Them.
keavy
128
18k
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