Темний режим (темна тема) — колірна схема інтерфейсу, в якій фон екрана стає темним (темно-сірий або чорний), а текст та елементи — світлими. Темний режим знижує навантаження на очі при слабкому освітленні, економить заряд батареї на OLED-дисплеях (до 60% за даними Google, 2019) та відповідає вимогам accessibility для користувачів із фотофобією. В iOS 13 та Android 10 Темний режим став системною опцією — користувач вмикає темну тему глобально, а додаток автоматично її підхоплює. Докладніше — у офіційній документації Android щодо темної теми.
Головне
Темний режим — це колірна схема, в якій фон екрана темний (зазвичай #121212 в Android, #1C1C1E в iOS), а текст та елементи інтерфейсу світлі. На відміну від простої інверсії кольорів, якісний Темний режим використовує спеціально підібрану палітру: темно-сірий фон замість чистого чорного (знижує гало-ефект), знижену насиченість акцентних кольорів та м'які тіні. Системна підтримка Темного режиму з'явилася в iOS 13 (вересень 2019) та Android 10 (вересень 2019).
Основна причина впровадження — комфорт користувача. При слабкому освітленні (ввечері, в темряві) яскравий білий екран викликає напруження очей і може провокувати головний біль. Темний режим знижує яскравість екрана без втрати читабельності. Для користувачів із фотофобією або світлочутливістю темна тема — не опція, а єдина можливість комфортно користуватися додатком. За даними Android Developers, понад 30% користувачів Android вмикають темну тему постійно.
Темний режим економить заряд батареї на OLED-екранах. На відміну від LCD, де підсвічування горить завжди, OLED-пікселі світяться самостійно. Темний колір означає, що піксель вимкнено — енергоспоживання падає. За даними Google (Android Developers Blog, 2019), на Pixel з OLED-екраном Темний режим при 100% яскравості знижує енергоспоживання на 60% порівняно зі світлою темою. На LCD-екранах економія мінімальна (близько 3–5%), оскільки підсвічування матриці працює незалежно від кольору пікселів.
Системна підтримка Темного режиму пройшла кілька етапів. iOS 13 (2019) ввела глобальну темну тему через UIUserInterfaceStyle. Android 10 (2019) додав Force Dark Mode для додатків без власної темної теми. Android 12 (2021) з Material You почав автоматично генерувати темну палітру зі шпалер. iOS 15 (2021) розширила API для Safari та веб-контенту. За даними StatCounter (2026), 82% топ-100 додатків в App Store та Google Play підтримують Темний режим.
| Платформа | Версія | Рік | Ключове нововведення |
|---|---|---|---|
| iOS | 13 | 2019 | UIUserInterfaceStyle, traitCollection.userInterfaceStyle |
| Android | 10 (Q) | 2019 | Force Dark Mode, тема DayNight AppCompat |
| iOS | 15 | 2021 | Темна тема для веб-контенту та Safari |
| Android | 12 | 2021 | Material You Dynamic Themes з автогенерацією темної палітри |
iOS Темний режим API заснований на протоколі UITraitEnvironment. Кожен UIViewController та UIView має властивість traitCollection.userInterfaceStyle, яка може бути .unspecified, .light або .dark. При зміні системної теми iOS викликає метод traitCollectionDidChange(_:). Розробник повинен оновити кольори в цьому методі або використовувати динамічні кольори (UIColor(dynamicProvider:)), які автоматично перемикаються між світлою та темною палітрою.
class ViewController: UIViewController {
@IBOutlet var titleLabel: UILabel!
override func traitCollectionDidChange(_: UITraitCollection?) {
super.traitCollectionDidChange(previousTraitCollection)
if traitCollection.hasDifferentColorAppearance(comparedTo: previousTraitCollection) {
updateColors()
}
}
func updateColors() {
let isDark = traitCollection.userInterfaceStyle == .dark
view.backgroundColor = isDark ? UIColor(named: "darkBackground") : .systemBackground
titleLabel.textColor = isDark ? .white : .darkText
}
}
// Примусове ввімкнення Темного режиму
window.overrideUserInterfaceStyle = .dark
Динамічні кольори — найкращий спосіб реалізації Темного режиму в iOS. UIColor(named:) автоматично завантажує різні значення з Asset Catalog для .light та .dark appearance. Достатньо задати колір в Assets.xcassets з двома варіантами (Any Appearance + Dark Appearance), і UIKit сам вибере потрібний. Динамічні системні кольори (UIColor.systemBackground, .label, .secondaryLabel) вже підтримують Темний режим і змінюються автоматично.
SwiftUI підтримує Темний режим з коробки. Всі стандартні кольори та модифікатори (Color.primary, .background, Color(UIColor.systemBackground)) автоматично адаптуються. Для користувацьких кольорів використовуйте Color(uiColor:) з динамічним UIColor або змінну середовища @Environment(\.colorScheme) для явної перевірки теми. SwiftUI View автоматично перемальовується при зміні теми, без необхідності викликати traitCollectionDidChange.
struct ThemeView: View {
@Environment(\.colorScheme) var colorScheme
var body: some View {
Text("Темний режим")
.foregroundColor(colorScheme == .dark ? .white : .black)
.background(colorScheme == .dark ? Color(.systemGray6) : .white)
}
}
Android Темний режим реалізується через бібліотеку AppCompat та тему Theme.AppCompat.DayNight. Вдень використовується світла тема, вночі — темна. Примусове ввімкнення задається через AppCompatDelegate.setDefaultNightMode(): MODE_NIGHT_YES (темна), MODE_NIGHT_NO (світла), MODE_NIGHT_FOLLOW_SYSTEM (системна). Ресурси розділяються на світлі (res/values/styles.xml) та темні (res/values-night/styles.xml).
// Примусове ввімкнення темної теми
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
// Встановлення до super.onCreate
AppCompatDelegate.setDefaultNightMode(
AppCompatDelegate.MODE_NIGHT_YES
)
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
}
// Визначення поточної теми
private val isDarkMode: Boolean
get() = (resources.configuration.uiMode and
Configuration.UI_MODE_NIGHT_MASK) ==
Configuration.UI_MODE_NIGHT_YES
}
// Реєстрація нічного режиму в AndroidManifest.xml
// android:configChanges="uiMode"
Force Dark Mode — системна функція Android 10+, яка автоматично інвертує кольори додатка, що не підтримує темну тему. Вмикається через Налаштування розробника або через атрибут android:forceDarkAllowed="true" в темі. Це тимчасове рішення: для продакшену потрібно реалізувати власну темну палітру через values-night, інакше візуальна якість буде низькою (інвертовані іконки, погано читабельні кольори).
Material You (Android 12+) автоматично генерує 5 ключових кольорів зі шпалер пристрою: primary, secondary, tertiary, neutral, neutralVariant. Для кожного кольору створюються світла та темна палітри. Розробник використовує атрибути: ?attr/colorPrimary, ?attr/colorOnPrimary, ?attr/colorSurface. Система сама вибирає варіант для поточної теми. Dynamic Color підтримується на Android 12+ з Material Design 3 (компонент com.google.android.material:material).
// values/themes.xml — світла тема
<style name="Theme.MyApp" parent="Theme.Material3.DayNight">
<item name="colorPrimary">@color/primary_light</item>
<item name="colorOnPrimary">@color/on_primary_light</item>
</style>
// values-night/themes.xml — темна тема
<style name="Theme.MyApp" parent="Theme.Material3.DayNight">
<item name="colorPrimary">@color/primary_dark</item>
<item name="colorOnPrimary">@color/on_primary_dark</item>
</style>
Дизайн Темного режиму — не просто інверсія кольорів. Google Material Design рекомендує використовувати темно-сірий (#121212) замість чистого чорного. Чистий чорний (#000000) створює надто високий контраст з білим текстом, викликаючи гало-ефект (ореол навколо літер). Рівень elevation (піднесення) елементів задається через колір: чим вищий елемент, тим світліший його фон. Картка поверх фону — #1E1E1E, діалог — #2D2D2D, панель навігації — #383838.
Кольоровий контраст у Темному режимі повинен бути нижчим, ніж у Світлому режимі. Material Design рекомендує: текст primary — білий (#FFFFFF) з непрозорістю 87%, secondary — 60%, disabled — 38%. Акцентні кольори повинні бути менш насиченими: якщо у світлій темі primary = #6200EE, то в темній — #BB86FC (світлий, приглушений фіолетовий). За даними WCAG 2.1, мінімальний контраст 4.5:1 для звичайного тексту повинен дотримуватися в обох темах.
| Елемент | Світлий режим | Темний режим | Контраст |
|---|---|---|---|
| Фон екрана | #FFFFFF | #121212 | — |
| Картка | #F5F5F5 | #1E1E1E | Elevation 1dp |
| Primary текст | #000000 87% | #FFFFFF 87% | 15.8:1 |
| Secondary текст | #000000 60% | #FFFFFF 60% | 9.0:1 |
| Primary колір | #6200EE | #BB86FC | 7.2:1 |
Зображення та іконки потребують окремої обробки в темній темі. Іконки з прозорістю повинні бути перефарбовані у світлий колір. Фотографії з яскравим фоном можуть виглядати засліплююче — рекомендується зменшити яскравість на 20–30% або додати напівпрозорий оверлей. Для логотипів та брендових елементів використовуйте версію для темного фону. iOS Asset Catalog та Android VectorDrawable підтримують окремі ресурси для світлої та темної теми.
Вибір між темами залежить від умов використання, типу контенту та вподобань користувача. Дослідження Nielsen Norman Group (2020) показало: при нормальному освітленні Світлий режим забезпечує на 15–20% вищу швидкість читання. Однак в умовах низької освітленості Темний режим знижує стомлюваність очей і покращує читабельність. Для інтерфейсів з великим обсягом тексту (статті, документи) Світлий режим зазвичай кращий.
Енергоспоживання — ключовий аргумент для Темного режиму на OLED. За даними Google (2019), YouTube у темній темі на OLED-екрані споживає на 43% менше енергії, ніж у світлій. Google Maps — на 32%. Чим яскравіший інтерфейс і чим вищий рівень яскравості екрана, тим значніша економія. На LCD-екранах економія не перевищує 5%. Для користувачів, які багато працюють з додатком на вулиці при яскравому сонці, Світлий режим залишається єдиним читабельним варіантом.
| Критерій | Темний режим | Світлий режим |
|---|---|---|
| Читабельність при яскравому світлі | Низька (блики на темному фоні) | Висока (максимальний контраст) |
| Стомлюваність очей у темряві | Низька | Висока (яскраве світло) |
| Енергоспоживання OLED | Низьке (до -60%) | Високе |
| Енергоспоживання LCD | Однакове (±5%) | Однакове (±5%) |
| Сприйняття кольорів | Спотворене (знижена насиченість) | Природне |
| Акомодація | Потрібен час на звикання | Природна для ока |
Рекомендації IT Sectr — ми реалізуємо обидві теми з можливістю перемикання: системна (follow system), темна, світла. Автоматичне перемикання не повинно бути єдиним варіантом — користувач може хотіти темну тему вдень (при мігрені) або світлу вночі (при читанні). У наших проєктах ми додаємо перемикач теми в налаштування профілю та запам'ятовуємо вибір. Для додатків з преміальним контентом (фото, відео) рекомендується попередній перегляд теми перед застосуванням.
Часті запитання
Так, на OLED-екранах економія сягає 60% (Google, Pixel, 2019). Чим яскравіший інтерфейс, тим більша економія. На LCD-екранах різниця мінімальна — до 5%, оскільки підсвічування матриці працює незалежно від кольору пікселів. Якщо користувач активно використовує додаток з переважанням білих елементів, Темний режим дає максимальний ефект.
Темний режим — загальна концепція темної схеми інтерфейсу. Material You Dynamic Themes (Android 12+) — реалізація, яка автоматично генерує темну палітру зі шпалер пристрою. Користувач може ввімкнути темну тему примусово, а Material You підбудує кольори під персоналізовану палітру, а не використовує фіксовані темні кольори.
У Налаштування → Екран та яскравість → Оформлення виберіть «Темна». Програмно: встановіть window.overrideUserInterfaceStyle = .dark в AppDelegate. Також доступне автоматичне перемикання за розкладом (захід/схід сонця або користувацький час) — це дозволяє плавно переходити між темами протягом дня.
forceDarkMode (Android 10+) — системна опція для примусового ввімкнення темної теми в додатках без власної підтримки. Android автоматично інвертує кольори екрана. Для якісної темної теми розробник повинен реалізувати власну палітру через values-night і вимкнути forceDarkAllowed.
Системний Темний режим з'явився в iOS 13 (вересень 2019) та Android 10 (вересень 2019). До цього розробники реалізовували темні теми самостійно. На 2026 рік понад 80% топ-додатків в App Store та Google Play підтримують Темний режим, а Apple та Google рекомендують його як обов'язкову опцію.
Підсумки
Ми розробимо мобільний застосунок під ключ
IT Sectr створює застосунки для iOS та Android для стартапів і бізнесу з 2017 року. Ми проконсультуємо вас і запропонуємо найкраще рішення.
Читайте також