3. • UI сфера СТОИТ на месте:
• Концепт >> приложение
Идея
Зачем?
• color << Message.getSimilarColor(.red)
• color << Message.effect.notVeryContrast
4. • UI сфера СТОИТ на месте:
• Концепт >> приложение
• Качественные приложения
для разных сфер
Идея
Зачем?
5. • UI сфера СТОИТ на месте:
• Концепт >> приложение
• Качественные приложения
для разных сфер
• UIKit НЕ станет Open source и у
него не будет evolution process
Идея
Зачем?
6. • Потенциал для пользователей:
• Как пользователь будет видеть нужную информацию
• Потенциал для разработчиков:
• Как будут разработчики будут собираться такие
интерфейсы
• Развитие
Это будет исключительно мое ИМХО
Идея
О чем я хочу поговорить
8. • Реактивное программирование — парадигма
программирования, ориентированная на потоки данных и
распространение изменений.
• a = b + c
• В императивном программировании `a` будет изменена по
месту вызова
• В реактивном при изменении `b` или `c`
Влияющие факторы
Реактивное программирование
11. • Чат-боты — это компьютерная программа, которая создана для имитации
речевого поведения человека при общении с одним или несколькими
собеседниками. По отношению к виртуальным собеседникам
употребляется также название программа-собеседник.
• Интересная особенность:
• Чат-боты имеют строгие гайдлайны ввода/получения информации
Влияющие факторы
Чат-боты
18. • Мутабельные UI
• Простая и понятная верстка
• Понятный и красивый переход от одного типа контента
к другому
• Ретроактивные визуальные компоненты
• Open source
• Готовые обучаемые модели
Идеи интерфейсов будущего
23. • Мутабельные UI
• Простая и понятная верстка
• Понятный и красивый переход от одного типа контента
к другому
• “Ретроактивные” визуальные компоненты
• Open source
• Готовые обучаемые модели
Идеи интерфейсов будущего
25. Идеи интерфейсов будущего
Мутабельные UI
struct QuestLevelBind {
var imageView: ImageView
var textView: TextView
var buttonComponent: Table<ButtonComponent>
}
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
}
}
27. Идеи интерфейсов будущего
Мутабельные UI
struct QuestLevelBind: ModelBindable, InterfaceDrawable {
var imageView: ImageView
var textView: TextView
var buttonComponent: Table<MyButtonComponent>
func draw() -> [InterfaceComponent] {
return [imageView, textView, buttonComponent]
}
}
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]
}
}
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)
30. Идеи интерфейсов будущего
Понятный и красивый переход от одного типа контента к другому
let text = TextView()
text.exchangeAnimation = .custom(configuration: AnimationConfiguration())