Стендап Сьогодні 📢 Канал в Telegram @stendap_sogodni

🤖🚫 AI-free content. This post is 100% written by a human, as is everything on my blog. Enjoy!

05.12.2023

Дев-адвент 5: історичні дані та графіки з прокруткою

Сьогодні доробляв графік, щоб можна було подивитись не тільки поточні, а й історичні дані.

Отримати історичні дані ваги дуже просто, бо їх обсяг в компʼютерних масштабах непомітний: 365 записів за рік це менше даних ніж цей пост. API HealthKit HKSampleQuery віддає всі дані одним запитом. Залишається показати їх красиво.

Для відображення теж не потрібно ніяких високих технологій, графік впорається з (максимум) декількома тисячами точок. Звісно, так само як і з маленьким графіком, тут потрібно обрати правильний масштаб — як горизонтальний (для дат), так і вертикальний (для ваги.)

По датах робимо прокрутку. Для прокрутки графік розташовуємо в ScrollView. Оскільки хочемо, щоб графік прокручувався “ліворуч”, тобто в напрямку минулого, то його просто відразу перемотати на кінець. Такі операції у SwiftUI робляться через “проксі”-обʼєкти, в цьому разі - ScrollViewProxy. Вони нагадують ref у React.

О, ще цікавий момент: SwiftUI позбувся моделі “екранів” в додатку. Це повністю протилежне старої моделі інтерфейсу для iOS, де, навпаки, у кожного екрану був свій контролер та була сувора та незручна схема переходу між ними. Навіть React Native був вимушений емулювати таку саме модель — принаймні React Native Navigation робив окреме дерево React на кожний екран. А тепер, у SwiftUI, ніяких екранів немає, та структура компонентів дуже нагадує те, до чого ми звикли в React.