Top Banner
Мобильные интерфейсы будущего Все примеры и картинки вымышлены. Любые совпадения с реальностью случайны.
38

Александр Зимин — Мобильные интерфейсы будущего

Apr 13, 2017

Download

Technology

CocoaHeads
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Александр Зимин — Мобильные интерфейсы будущего

Мобильные интерфейсы будущего

Все примеры и картинки вымышлены. Любые совпадения с реальностью случайны.

Page 2: Александр Зимин — Мобильные интерфейсы будущего

Идея

Page 3: Александр Зимин — Мобильные интерфейсы будущего

• UI сфера СТОИТ на месте:• Концепт >> приложение

Идея Зачем?

• color << Message.getSimilarColor(.red)

• color << Message.effect.notVeryContrast

Page 4: Александр Зимин — Мобильные интерфейсы будущего

• UI сфера СТОИТ на месте:• Концепт >> приложение

• Качественные приложения для разных сфер

Идея Зачем?

Page 5: Александр Зимин — Мобильные интерфейсы будущего

• UI сфера СТОИТ на месте:• Концепт >> приложение

• Качественные приложения для разных сфер

• UIKit НЕ станет Open source и у него не будет evolution process

Идея Зачем?

Page 6: Александр Зимин — Мобильные интерфейсы будущего

• Потенциал для пользователей:• Как пользователь будет видеть нужную информацию

• Потенциал для разработчиков:• Как будут разработчики будут собираться такие

интерфейсы

• Развитие

Это будет исключительно мое ИМХО

Идея О чем я хочу поговорить

Page 7: Александр Зимин — Мобильные интерфейсы будущего

Влияющие факторы

Page 8: Александр Зимин — Мобильные интерфейсы будущего

• Реактивное программирование — парадигма программирования, ориентированная на потоки данных и распространение изменений.

• a = b + c• В императивном программировании `a` будет изменена по

месту вызова• В реактивном при изменении `b` или `c`

Влияющие факторы Реактивное программирование

Page 9: Александр Зимин — Мобильные интерфейсы будущего

Влияющие факторы Реактивное программирование

Page 10: Александр Зимин — Мобильные интерфейсы будущего

Влияющие факторы Реактивное программирование

Page 11: Александр Зимин — Мобильные интерфейсы будущего

• Чат-боты — это компьютерная программа, которая создана для имитации речевого поведения человека при общении с одним или несколькими собеседниками. По отношению к виртуальным собеседникам употребляется также название программа-собеседник.

• Интересная особенность:• Чат-боты имеют строгие гайдлайны ввода/получения информации

Влияющие факторы Чат-боты

Page 12: Александр Зимин — Мобильные интерфейсы будущего

Влияющие факторы Чат-боты

Page 13: Александр Зимин — Мобильные интерфейсы будущего

www.youtube.com/watch?v=ypk-72mhYBk

Влияющие факторы Backend-driven UIs

Page 14: Александр Зимин — Мобильные интерфейсы будущего

Влияющие факторы Watch Kit

20 pt

40%

Cell

Page 15: Александр Зимин — Мобильные интерфейсы будущего

Влияющие факторы Watch Kit

Cell

40pt

Page 16: Александр Зимин — Мобильные интерфейсы будущего

Влияющие факторы Watch Kit

Cell content isveryverybig

Page 17: Александр Зимин — Мобильные интерфейсы будущего

Идеи интерфейсов будущего

Page 18: Александр Зимин — Мобильные интерфейсы будущего

• Мутабельные UI• Простая и понятная верстка• Понятный и красивый переход от одного типа контента

к другому• Ретроактивные визуальные компоненты• Open source• Готовые обучаемые модели

Идеи интерфейсов будущего

Page 19: Александр Зимин — Мобильные интерфейсы будущего

Примеры

Page 20: Александр Зимин — Мобильные интерфейсы будущего
Page 21: Александр Зимин — Мобильные интерфейсы будущего

Image

Text

Buttons

(.viewWidth(1), .content)

(.viewWidth(0.9), .content) h = .center

Composition

Page 22: Александр Зимин — Мобильные интерфейсы будущего

Image

Text

Buttons

(.viewWidth(1), .content)

(.viewWidth(0.9), .content) h = .center

Composition

Text

(.viewWidth(0.8), .content(16)) h = .center v = .center

View(.viewWidth(0.9), .content) h = .center

Touchable

Page 23: Александр Зимин — Мобильные интерфейсы будущего

• Мутабельные UI • Простая и понятная верстка • Понятный и красивый переход от одного типа контента

к другому • “Ретроактивные” визуальные компоненты • Open source • Готовые обучаемые модели

Идеи интерфейсов будущего

Page 24: Александр Зимин — Мобильные интерфейсы будущего

Идеи интерфейсов будущего Мутабельные UI

struct QuestLevelModel { var image: Image var text: Text var actions: List<CustomActions> }

Page 25: Александр Зимин — Мобильные интерфейсы будущего

Идеи интерфейсов будущего Мутабельные UI

struct QuestLevelBind { var imageView: ImageView var textView: TextView var buttonComponent: Table<ButtonComponent> }

Page 26: Александр Зимин — Мобильные интерфейсы будущего

Идеи интерфейсов будущего Мутабельные UI

struct QuestLevelModel { var image: Image var text: Text var actions: List<CustomActions> }

struct QuestLevelBind: ModelBindable { var imageView: ImageView var textView: TextView var buttonComponent: Table<MyButtonComponent> func bind(levelModel: QuestLevelModel) { imageView << levelModel.image textView << levelModel.text buttonComponent.component.text << levelModel.actions.value.text buttonComponent.component.touch ->> levelModel.actions.value.execute } }

Page 27: Александр Зимин — Мобильные интерфейсы будущего

Идеи интерфейсов будущего Мутабельные UI

struct QuestLevelBind: ModelBindable, InterfaceDrawable { var imageView: ImageView var textView: TextView var buttonComponent: Table<MyButtonComponent> func draw() -> [InterfaceComponent] { return [imageView, textView, buttonComponent] } }

Page 28: Александр Зимин — Мобильные интерфейсы будущего

Идеи интерфейсов будущего Простая и понятная верстка

struct QuestLevelBind: ModelBindable, InterfaceDrawable { var imageView: ImageView var textView: TextView var buttonComponent: Table<MyButtonComponent> func draw() -> [InterfaceComponent] { let separator = Separator() return [imageView, separator, textView, buttonComponent] } }

Page 29: Александр Зимин — Мобильные интерфейсы будущего

Идеи интерфейсов будущего Простая и понятная верстка

enum WidthAligment { case fixed(value: CGFloat) case content(adjustment: CGFloat) case viewWidth(percent: CGFloat, adjustment: CGFloat) }

let text = TextView(width: .viewWidth(percent: 0.8), height: .content)

Page 30: Александр Зимин — Мобильные интерфейсы будущего

Идеи интерфейсов будущего Понятный и красивый переход от одного типа контента к другому

let text = TextView() text.exchangeAnimation = .custom(configuration: AnimationConfiguration())

Page 31: Александр Зимин — Мобильные интерфейсы будущего

Идеи интерфейсов будущего “Ретроактивные” визуальные компоненты

// Actions protocol Touchable { } protocol SliderType { }protocol PickerType { }

Page 32: Александр Зимин — Мобильные интерфейсы будущего

Идеи интерфейсов будущего Готовые обучаемые модели

// Actions protocol Touchable { } protocol SliderType { }protocol PickerType { }

// Recommendation System protocol RecomentationalTouchType: Touchable { }

Page 33: Александр Зимин — Мобильные интерфейсы будущего

Идеи интерфейсов будущего Готовые обучаемые модели

// Recommendation System protocol RecomentationalTouchType: Touchable { func recomended(minimalSize: CGSize) func recomended(executionType: ExecutionType) }

Page 34: Александр Зимин — Мобильные интерфейсы будущего

Идеи интерфейсов будущего Готовые обучаемые модели

// Recommendation System protocol RecomentationalTouchType: Touchable { func recomended(minimalSize: CGSize) func recomended(executionType: ExecutionType) }

protocol RecomentationalTextType { var textPurpose: TextPurpose { get } func recomended(minimalFontSize size: CGFloat) func recomended(fontWeight: ExecutionType) }

Page 35: Александр Зимин — Мобильные интерфейсы будущего

Идеи интерфейсов будущего Готовые обучаемые модели

// Recommendation System protocol RecomentationalTouchType: Touchable { func recomended(minimalSize: CGSize) func recomended(executionType: ExecutionType) }

protocol RecomentationalTextType { var textPurpose: TextPurpose { get } func recomended(minimalFontSize size: CGFloat) func recomended(fontWeight: ExecutionType) }

~Open Source

Page 36: Александр Зимин — Мобильные интерфейсы будущего
Page 37: Александр Зимин — Мобильные интерфейсы будущего

struct MyButton: ViewType, InterfaceDrawable, InterfaceComponent, Touchable { var rightImage: ImageView var leftImage: ImageView var text: TextView var touch: TouchAction let width: WidthAligment let height: HeightAligment mutating func setup() { leftImage = ImageView(width: .fixed(value: 20), height: .fixed(value: 20)) leftImage = ImageView(width: .fixed(value: 20), height: .fixed(value: 20)) text = TextView(width: .content(adjustment: 0), height: .content(adjustment: 0))

width = .viewWidth(percent: 0.8, adjustment: 0).lessOrEqual() } func draw() -> [InterfaceComponent] { return [leftImage, text, rightImage] } // ... }

Page 38: Александр Зимин — Мобильные интерфейсы будущего

Спасибо за внимание!

Зимин Александр @ziminalex

[email protected]