Podlodka i os crew 8
Podlodka i os crew 8
в начале было MVP
вот стооооолько
анимаций хочу
Podlodka i os crew 8
ctrl C + ctrl V
ctrl C + ctrl V понять базовый принцип
ПЛАН
Hitches
как работает
UI
Instruments
как устроено
приложение
1 2 3 4
Итоги
5
ПЛАН
Hitches
как работает
UI
Instruments
как устроено
приложение
1 2 3 4
Итоги
5
Application
Run Loop UIKit
Event
queue
Application
Run Loop UIKit
Core
Animation
iOS
Port
Application
Run Loop UIKit
Core
Animation
iOS
Port
Event
queue
Application
Run Loop UIKit
Core
Animation
iOS
Port
Event
queue
Application
Run Loop UIKit
Core
Animation
iOS
Port
Event
queue
Application
Run Loop UIKit
Core
Animation
CATransaction.begin()
CATransaction.commit()
iOS
Port
Event
queue
Application
Run Loop UIKit
Core
Animation
CATransaction.begin()
CATransaction.commit()
ПЛАН
Hitches
как работает
UI
Instruments
как устроено
приложение
1 2 3 4
Итоги
5
60 Гц
частота обновлений у большинства устройств
1 сек
60 обновлений
кадр 1
16,67 ms
кадр 2 кадр 3 кадр 4 кадр 5
16,67 ms
VSYNC сообщает, когда экран нужно обновить
кадр 1 кадр 2 кадр 3 кадр 4 кадр 5
App
Render
server
On the
display
The Render Loop
3 стадии
16,67 ms
iOS
Port Event
queue
Application
Run Loop UIKit
Core
Animation
CATransaction.begin()
CATransaction.commit()
iOS
Port Event
queue
Application
Run Loop UIKit
Core
Animation
CATransaction.begin()
CATransaction.commit()
App
Render
server
On the
display
Event
The Render Loop
Event
The Render Loop
Commit
iOS
Render
server
Port Event
queue
Application
Run Loop UIKit
Core
Animation
CATransaction.begin()
CATransaction.commit()
Render
server
iOS
Render
server
Port Event
queue
Application
Run Loop UIKit
Core
Animation
CATransaction.begin()
CATransaction.commit()
App
Render
server
On the
display
Event
The Render Loop
Commit Render prepare Render execute
Render
server
iOS
Render
server
Port Event
queue
Application
Run Loop UIKit
Core
Animation
CATransaction.begin()
CATransaction.commit()
App
Render
server
On the
display
Event Commit
The Render Loop
Render prepare Display
Render execute
Render
server
App
Render
server
On the
display
Event Commit Render prepare Display
Render execute
The Render Loop
iOS
Render
server
Port Event
queue
Application
Run Loop UIKit
Core
Animation
CATransaction.begin()
CATransaction.commit()
Render
server
iOS
Port
Event
queue
Application
Run Loop UIKit
Core
Animation
CATransaction.begin()
CATransaction.commit()
iOS
Render
server
iOS
Port
Event
queue
Application
Run Loop UIKit
Core
Animation
CATransaction.begin()
CATransaction.commit()
iOS
Render
server
Hitch!!!
Hitch!!!
ПЛАН
Hitches
как работает
UI
Instruments
как устроено
приложение
1 2 3 4
Итоги
5
кадр 1
16,67 ms
кадр 1 кадр 2
кадр 1 кадр 2 кадр 3
кадр 1 кадр 2 кадр 3
кадр 1 кадр 2 кадр 3 кадр 4
Commit hitch
Commit hitch Rendering hitch
Commit hitch
App
Render
server
On the
display
кадр 1 кадр 2 кадр 3
ожидалось здесь
кадр 4
Commit hitch
App
Render
server
On the
display
кадр 1 кадр 2 кадр 3
ожидалось здесь
кадр 4
через 16,67 ms
Commit hitch
App
Render
server
On the
display
кадр 1 кадр 2 кадр 3
ожидалось здесь через 33,34 ms
Commit phase
Layout
Display
Prepare
Commit
Commit phase
Layout
Display
Prepare
Commit
Добавление или удаление views
frame, bounds, transform
setNeedsLayout()
Commit phase
Layout
Display
Prepare
Commit
Добавление или удаление views
frame, bounds, transform
setNeedsLayout()
Добавление или удаление views
frame, bounds, transform
setNeedsLayout()
Commit phase
Layout
Display
Prepare
Commit
UI Window UI View UI View UI View
из констрейнтов составляются системы линейных уравнений
и вычисляются фреймы для всех вью в иерархии
Auto Layout
UI Window UI View UI View UI View
Оптимизация Auto Layout
Одновременное добавление
ограничений
Оптимизация Auto Layout
Одновременное добавление
ограничений
Скрывать вью
вместо удаления
Оптимизация Auto Layout
Одновременное добавление
ограничений
Скрывать вью
вместо удаления
Изменение константы
констрейнтов
Оптимизация Auto Layout
Одновременное добавление
ограничений
Скрывать вью
вместо удаления
Изменение константы
констрейнтов
Управление приоритетом
Оптимизация трансформаций
transform
Оптимизация трансформаций
transform transform3D
Оптимизация трансформаций
transform transform3D
draw(rect:)
setNeedsDisplay()
Commit phase
Layout
Display
Prepare
Commit
draw(rect:)
setNeedsDisplay()
Commit phase
Layout
Display
Prepare
Commit
Асинхронное рисование
Асинхронное рисование
Происходит декомпрессия
и масштабирование изображений Commit phase
Layout
Display
Prepare
Commit
iOS 15
iOS 15
До iOS 15
PDF или PNG?
PDF или PNG?
1. Если картинка всегда одного размера - PNG
PDF или PNG?
1. Если картинка всегда одного размера - PNG
2. Если картинка скейлится - PDF
CATiledLayer
Упаковка layer tree
Отправка его на render server
Commit phase
Layout
Display
Prepare
Commit
Упаковка layer tree
Отправка его на render server
Commit phase
Layout
Display
Prepare
Commit
App
Render
server
On the
display
ожидалось здесь
Render hitch
кадр 2
кадр 1 кадр 4
кадр 3
App
Render
server
On the
display
ожидалось здесь через 16,67 ms
Render hitch
кадр 2
кадр 1 кадр 4
кадр 3
Root
Shadow Core Animation is Fun
Render prepare
Root
Shadow Core Animation is Fun
Render prepare
Shadow Core Animation is Fun
Root
Shadow Core Animation is Fun
Render prepare
Core Animation is Fun
Shadow Core Animation is Fun
Shadow Core Animation is Fun
Shadow Core Animation is Fun
Shadow Core Animation is Fun
Shadow Core Animation is Fun
Shadow Core Animation is Fun
Shadow Core Animation is Fun
Shadow Core Animation is Fun
Shadow Core Animation is Fun
Shadow Core Animation is Fun
Shadow Core Animation is Fun
Shadow Core Animation is Fun
Shadow Core Animation is Fun
Shadow Core Animation is Fun
Shadow Core Animation is Fun
Shadow Core Animation is Fun
Core Animation is Fun
Offscreen rendering
Offscreen rendering
Shadow
Offscreen rendering
Shadow
Mask
Offscreen rendering
Shadow
Visual Effect
Mask
Offscreen rendering
Shadow
Visual Effect
Corner radius (+clipToBounds)
Mask
Offscreen rendering
Offscreen rendering
Offscreen rendering
Color blending
Color blending
Color blending
Opacity
Color blending
Color blending
Opacity
Corner radius
Color blending
Opacity
Corner radius
Color blending
Opacity
Corner radius
Color blending
Универсальные решения
shouldRasterize
Универсальные решения
shouldRasterize готовые картинки
Пара слов про списки
reuse cell
Пара слов про списки
reuse cell
hitch
Пара слов про списки
reuse cell
hitch
prefetching cell use prefetched cell
Podlodka i os crew 8
Podlodka i os crew 8
ПЛАН
Hitches
как работает
UI
Instruments
как устроено
приложение
1 2 3 4
Итоги
5
Podlodka i os crew 8
Podlodka i os crew 8
Podlodka i os crew 8
Podlodka i os crew 8
Podlodka i os crew 8
16,67 ms
16,67 ms
Hitch!!!
16,67 ms
Hitch!!!
Hitch!!!
16,67 ms
Hitch!!!
Hitch!!!
16,67 ms
gap
16,67 ms
gap
CADisplayLink
ПЛАН
Hitches
как работает
UI
Instruments
как устроено
приложение
1 2 3 4
Итоги
5
Подведем итоги
CPU
Layout
Display
Картинки
Подведем итоги
CPU
Layout
Display
Картинки
GPU
Offscreen rendering
Color blending
Подведем итоги
CPU
Layout
Display
Картинки
GPU
Offscreen rendering
Color blending
Run Loop
GCD
Podlodka i os crew 8
Podlodka i os crew 8
ОТ MVP
К СЛОЖНЫМ
ИНТЕРФЕЙСАМ
Саша Лис
@dev_lis

More Related Content

PDF
UI, сделай мне хорошо
PDF
"Как остаться в светлой памяти: доклад о том, почему наши приложения вылетают...
PDF
"Mobile Velocity Index: Data-driven оптимизация времени старта" / Павел Воро...
PPTX
Zillion Whales: как отрисовать 12 000 спрайтов в Unity
PPTX
Unity: WebGL и IL2CPP — будущее скриптинга в Unity»
PPTX
Heyworks: Cравнительный анализ решений для клиент-серверного взаимодействия и...
PDF
Microsoft Edge и платформа веб-приложений в Windows 10 / Константин Кичинский...
PDF
Попасть в мишень
UI, сделай мне хорошо
"Как остаться в светлой памяти: доклад о том, почему наши приложения вылетают...
"Mobile Velocity Index: Data-driven оптимизация времени старта" / Павел Воро...
Zillion Whales: как отрисовать 12 000 спрайтов в Unity
Unity: WebGL и IL2CPP — будущее скриптинга в Unity»
Heyworks: Cравнительный анализ решений для клиент-серверного взаимодействия и...
Microsoft Edge и платформа веб-приложений в Windows 10 / Константин Кичинский...
Попасть в мишень

What's hot (20)

PPTX
Wargaming.net: Как мы впихнули танки в планшет
PPTX
Wargaming.net: Архитектура современных 3D движков
PDF
Android - 10 - Graphics
PDF
JavaScript завтра / Сергей Рубанов (Exante Limited)
PDF
Mihail Zachepilo - WebAssembly powered Machine Learning
PPTX
Nival: Как не увлечься погоней за универсализацией компонент
PDF
Онлайн-кинотеатр для SmartTV на веб-технологиях / Михаил Лабанов (Ayyo)
PDF
Работа с графической подсистемой (Lecture 10 – Graphics)
PPTX
трики разработчика мобильных игр
PDF
автоматизированная сборка Flash приложений (as2, as3). андрей жданов. зал 4
PDF
Как взаимодействовать с графическими дизайнерами: готовим UI Kit / Артем Моло...
PPSX
Moving from Flash to HTML5 – converting large projects
PDF
Windows at Mac / Windows на мак
PPTX
Алексей Алексеев ”Blitz-доклад”/ Wargaming
PPT
Flash - Примеры
PPTX
Aterdux Entertainment: Собственный движок как способ экономной и эффективной...
PDF
'STORY OF ANOTHER ANIMATION' by YURII ARTYUKH at OdessaJS'2020
ODP
Диплом
PPTX
PDF
Как не положить тысячи серверов с помощью системы централизованного управлени...
Wargaming.net: Как мы впихнули танки в планшет
Wargaming.net: Архитектура современных 3D движков
Android - 10 - Graphics
JavaScript завтра / Сергей Рубанов (Exante Limited)
Mihail Zachepilo - WebAssembly powered Machine Learning
Nival: Как не увлечься погоней за универсализацией компонент
Онлайн-кинотеатр для SmartTV на веб-технологиях / Михаил Лабанов (Ayyo)
Работа с графической подсистемой (Lecture 10 – Graphics)
трики разработчика мобильных игр
автоматизированная сборка Flash приложений (as2, as3). андрей жданов. зал 4
Как взаимодействовать с графическими дизайнерами: готовим UI Kit / Артем Моло...
Moving from Flash to HTML5 – converting large projects
Windows at Mac / Windows на мак
Алексей Алексеев ”Blitz-доклад”/ Wargaming
Flash - Примеры
Aterdux Entertainment: Собственный движок как способ экономной и эффективной...
'STORY OF ANOTHER ANIMATION' by YURII ARTYUKH at OdessaJS'2020
Диплом
Как не положить тысячи серверов с помощью системы централизованного управлени...
Ad

Similar to Podlodka i os crew 8 (20)

PPTX
разработка Metro style приложений
PDF
CI/CD with Fastlane and Telegram
PDF
UA Mobile 2012
PPT
Разработка GUI игрового проекта на Scaleform
PPTX
CONTINUOUS INTEGRATION ДЛЯ ЧАЙНИКОВ ВМЕСТЕ С TEAMCITY
PPTX
Разработка модуля для отладки приложений на языке ActionScript 3 в среде Visu...
PDF
DevOPS meetup
PPTX
CodeFest 2011. Сошников Д. — Разработка игр для Windows Phone 7
PPTX
Silverlight 5
PDF
IT-инфраструктура. FAQ для разработчика
ODP
Continous Integration
PDF
Опыт разработки сложных клиент-серверных приложений на TypeScript и ASP.NET
PDF
Wild Async .NET world: AID Kit for boy-scouts
PPTX
Automation testing desktop applications
PPT
Qualitative reconstruction of the camera and geometry of a scene, as a key to...
PPTX
SECON'2016. Чубарь Алексей, Мобильные грабли Unity
PDF
Android Transition - плавные переходы на Android
PDF
Сергей Перескоков "JS API Яндекс.Карт 2.0: что нового и как это работает"
PDF
2016-08-20 01 Дмитрий Рабецкий, Сергей Сорокин. Опыт работы с Android Medi...
PPTX
Citrix on VMware
разработка Metro style приложений
CI/CD with Fastlane and Telegram
UA Mobile 2012
Разработка GUI игрового проекта на Scaleform
CONTINUOUS INTEGRATION ДЛЯ ЧАЙНИКОВ ВМЕСТЕ С TEAMCITY
Разработка модуля для отладки приложений на языке ActionScript 3 в среде Visu...
DevOPS meetup
CodeFest 2011. Сошников Д. — Разработка игр для Windows Phone 7
Silverlight 5
IT-инфраструктура. FAQ для разработчика
Continous Integration
Опыт разработки сложных клиент-серверных приложений на TypeScript и ASP.NET
Wild Async .NET world: AID Kit for boy-scouts
Automation testing desktop applications
Qualitative reconstruction of the camera and geometry of a scene, as a key to...
SECON'2016. Чубарь Алексей, Мобильные грабли Unity
Android Transition - плавные переходы на Android
Сергей Перескоков "JS API Яндекс.Карт 2.0: что нового и как это работает"
2016-08-20 01 Дмитрий Рабецкий, Сергей Сорокин. Опыт работы с Android Medi...
Citrix on VMware
Ad

Podlodka i os crew 8