Notch — основи, адаптація інтерфейсу під виріз екрану

Автор: IT Sectr Опубліковано: 2026-02-28 Час читання: 10 хв

Notch — це виріз у верхньому частині дисплея iPhone, що вміщує фронтальну камеру, динамік та датчики Face ID. Вперше представлений у iPhone X (2017), notch змінив підхід до проектування мобільних інтерфейсів: область екрану навколо вирізу стала «мертвою зоною» для контенту. Для адаптації інтерфейсу Apple ввела Safe Area — відступи, що гарантують, що контент не перекривається notch, закругленими кутами та Home Indicator. На Android аналогічна концепція реалізується через safeAreaInsets в iOS та displayCutout + WindowInsets в Android.

Головне

  • Safe Area — область екрану, гарантовано вільна від notch, закруглених кутів та Home Indicator
  • safeAreaInsets — властивість UIView в iOS, що повертає відступи Safe Area для кожного краю
  • displayCutout — клас Android, що описує виріз або закруглені кути на екрані
  • WindowInsets — система Android для отримання відступів під системні елементи (стрічка статусу, notch)
  • Адаптивний дизайн — інтерфейс повинен коректно відображатися на пристроях з notch та без нього

Що таке Notch?

Notch (виріз, «чолка») — це область у верхньому частині екрану смартфона, де розташовані фронтальна камера, розмовний динамік, датчики наближення та освітлення, а для iPhone X та новіших — інфрачервона камера Face ID, проектор точок та підсвічка (TrueDepth camera system). Notch був введений для збільшення корисної площі екрану при збереженні всіх необхідних датчиків — замість верхньої рамки (bezel) дисплей розширюється вгору навколо вирізу.

Розміри: стандартний notch iPhone має ширину ~34 мм (~209 pt у портретній орієнтації для 6.1-дюймових моделей) та висоту ~5 мм (~30 pt). Збоку від notch знаходяться «вуха» — невеликі ділянки екрану праворуч та ліворуч від вирізу. Праве «вухо» зазвичай показує час, індикатор батареї та Wi-Fi; ліве — оператора та статус. У ландшафтній орієнтації iOS ховає notch чорною смугою на всю ширину стрічки статусу — контент не відображається у зоні вирізу.

Не тільки iPhone: концепцію notch запозичили багато виробників Android. Google Pixel 3 XL, OnePlus 6, Huawei P20, Xiaomi Mi 8 — усі мали виріз. Деякі виробники пішли далі: краплеподібний notch (waterdrop), punch-hole камера (отвір у екрані), слайдер-камера (висувний модуль). Сучасні Android-флагмани (Samsung Galaxy S23+, Google Pixel 8 Pro) використовують punch-hole — мінімальний отвір для камери у верхньому частині екрану, без широкого вирізу.

Safe Area в iOS: safeAreaInsets

Safe Area — це прямокутна область всередині view, яка гарантовано не перекривається системними елементами інтерфейсу: notch, закругленими кутами екрану (corner radius), Home Indicator, панеллю вкладок (tab bar) та панеллю навігації (navigation bar). Розміри Safe Area повертаються через властивість UIView.safeAreaInsets — UIEdgeInsets зі значеннями top, left, bottom, right. Для iPhone з notch верхній відступ = ~44 pt (портрет) або ~0 pt (ландшафт з чорною смугою).

swift
// Використання safeAreaInsets для позиціонування контенту
class NotchAwareViewController: UIViewController {

    override func viewDidLayoutSubviews() {
        super.viewDidLayoutSubviews()

        // Читання відступів Safe Area
        let safeArea = self.view.safeAreaInsets

        // Логування значень для налагодження
        print("Top inset: \(safeArea.top)")    // ~44 pt з notch
        print("Bottom inset: \(safeArea.bottom)") // ~34 pt з Home Indicator

        // Позиціонування заголовка з урахуванням Safe Area
        titleLabel.frame = CGRect(
            x: safeArea.left + 16,
            y: safeArea.top + 16,
            width: self.view.bounds.width - safeArea.left - safeArea.right - 32,
            height: 44
        )
    }

    // Обробка змін Safe Area (поворот, Multi-Tasking)
    override func viewSafeAreaInsetsDidChange() {
        super.viewSafeAreaInsetsDidChange()
        viewDidLayoutSubviews() // Перерахунок layout
    }
}

Auto Layout та Safe Area: у Interface Builder використовуйте «Safe Area» як ціль анкера замість «Superview». Для програмного макету використовуйте safeAreaLayoutGuide: let guide = view.safeAreaLayoutGuide; titleLabel.topAnchor.constraint(equalTo: guide.topAnchor). iOS автоматично оновлює safeAreaInsets при повороті пристрою, переході в Split View на iPad, показі/приховуванні клавіатури та змінах орієнтації. Усі стандартні контролери UIKit (UINavigationController, UITabBarController) вже враховують Safe Area. Користувацькі view та контролери повинні явно використовувати safeAreaInsets.

Notch в Android: DisplayCutout та WindowInsets

DisplayCutout — це клас Android SDK, доданий в API 28 (Android 9.0), що описує область вирізу на екрані. Його можна отримати через WindowInsets.displayCutout(). Клас повертає boundingBoxList — список прямокутників, що описують виріз(и), та safeInsetTop/safeInsetBottom/safeInsetLeft/safeInsetRight — мінімальні відступи для безпечного відображення контенту. Android підтримує різні конфігурації вирізів: центральний (як iPhone), збоку (камера в куті), подвійний (дві камери), punch-hole.

kotlin
// Адаптація інтерфейсу під DisplayCutout в Activity
class NotchAwareActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        // Дозволяємо відображення контенту в зоні вирізу (якщо потрібно)
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
            window.attributes.layoutInDisplayCutoutMode =
                WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_NEVER
        }
    }

    override fun onWindowFocusChanged(hasFocus: Boolean) {
        super.onWindowFocusChanged(hasFocus)

        // Отримання DisplayCutout через WindowInsets
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P && hasFocus) {
            val cutout = window.decorView.rootWindowInsets.displayCutout
            val safeTop = cutout?.safeInsetTop ?: 0

            // Встановлюємо відступ для верхнього контенту
            headerView.updatePadding(top = safeTop)
        }
    }
}

Режими відображення (layoutInDisplayCutoutMode): ALWAYS — контент може відображатися в зоні вирізу (для повноекранних додатків, відео, ігор); NEVER — контент ніколи не перекриває виріз, система додає відступи; SHORT_EDGES — контент відображається в зоні вирізу лише на короткому краю (для портретних додатків з верхнім notch). Стандартний режим — SHORT_EDGES (починаючи з Android 12). Для punch-hole камер виріз менший, і багато додатків використовують ALWAYS для максимального використання екрану.

Еволюція Notch: від iPhone X до Dynamic Island

iPhone X (2017) — перший смартфон Apple з notch. Виріз містив TrueDepth камеру для Face ID — систему з інфрачервоної камери, проектора точок та підсвічки. Розміри вирізу: ~34 мм × 5 мм. У iOS 11 Apple представив Safe Area для адаптації додатків. Користувачі розділилися: одні прийняли notch як необхідність для Face ID, інші критикували за «обрізаний» екран.

iPhone 13 (2021) — Apple зменшив notch на 20% за рахунок переміщення динаміка до верхньої рамки. Це був останній класичний notch. iPhone 14 та 14 Plus (2022) зберегли зменшений notch. iPhone 14 Pro та Pro Max представили Dynamic Island — еліпсоїдний виріз, що об'єднує камеру та датчики Face ID, який динамічно змінює форму та відображає системні сповіщення (таймер, музика, підключення AirPods). Dynamic Island став програмною платформою з власним API (ActivityKit, Live Activities).

ПоколінняТип вирізуОсобливостіSafe Area Top
iPhone X–XS (2017–2018)Великий notchFace ID, 34×5 мм44 pt
iPhone XR (2018)NotchTouch ID, менший notch44 pt
iPhone 11 (2019)NotchFace ID, широкий виріз44 pt
iPhone 12 (2020)NotchДинамік переміщено в рамку44 pt
iPhone 13 (2021)Зменшений notchНа 20% менший44 pt
iPhone 14 / 14 Plus (2022)Зменшений notchБез Face ID (14 Plus)44 pt
iPhone 14 Pro (2022)Dynamic IslandАдаптивний виріз54 pt
iPhone 15–16 (2023–2024)Dynamic IslandActivityKit, Live Activities54 pt

Dynamic Island — це не просто виріз, а інтерактивний елемент інтерфейсу. При підключенні AirPods острів розширюється, показуючи іконку та статус. Виклик таксі (Uber) показує час прибуття. Таймер видно в острові при згортанні додатка. Dynamic Island доступний на iPhone 14 Pro/Pro Max, iPhone 15/15 Pro/15 Pro Max, iPhone 16/16 Pro/16 Pro Max. Safe Area для Dynamic Island: верхній відступ = 54 pt (на 10 pt більше, ніж класичний notch).

Правила дизайну для інтерфейсів з вирізом

Ніколи не ховайте контент за notch — використовуйте Safe Area або DisplayCutout для автоматичного розрахунку відступів. Не встановлюйте фіксовані значення відступів (наприклад, 44 pt) — вони відрізняються на різних пристроях та в різних орієнтаціях. Завжди використовуйте системні API для читання Safe Area: safeAreaInsets в iOS, windowInsets.displayCutout в Android. Це гарантує коректне відображення на всіх пристроях: iPhone SE (без notch), iPhone 14 Pro (з notch), iPhone 15 (Dynamic Island), iPad (без notch, але з Home Indicator).

Ландшафтна орієнтація — особлива зона ризику. На iPhone з notch у ландшафті iOS автоматично додає чорну смугу на всю ширину стрічки статусу (контент не відображається ліворуч та праворуч від notch). Це робиться через Safe Area inset = 0 top, але збільшеними лівим/правим відступами (~47 pt). Не намагайтеся вимкнути цю поведінку — App Store відхилить додаток, що використовує «заборонені» зони екрану для контенту в ландшафті. Для повноекранного відео використовуйте AVPlayerViewController, який автоматично розміщує елементи керування поза зоною notch.

ПравилоiOSAndroid
API для відступівsafeAreaInsets / safeAreaLayoutGuideWindowInsets.displayCutout.safeInsetTop
Адаптація до поворотуviewSafeAreaInsetsDidChangeonWindowFocusChanged
Повноекранний режимprefersStatusBarHidden = trueSYSTEM_UI_FLAG_FULLSCREEN
Контент стрічки статусуАвтоматично в «вухах» навколо notchЧерез layoutInDisplayCutoutMode
ЛандшафтЧорна смуга (автоматично)Відступи від WindowInsets
Відео/ІгриAVPlayerViewController (безпечно)LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS

Фон та стрічка статусу: якщо ви використовуєте користувацький колір фону, він повинен заповнювати всю область екрану, включаючи зону за notch. Не малюйте контент поверх стрічки статусу — використовуйте Safe Area. Для темного режиму переконайтеся, що стрічка статусу читабна: встановіть preferredStatusBarStyle відповідно до стилю вашого фону (.default для темного тексту на світлому фоні, .lightContent для світлого тексту на темному фоні).

Тестування адаптації під Notch

Симулятори та емулятори: Xcode надає симулятори всіх моделей iPhone з notch (iPhone X–14) та Dynamic Island (iPhone 14 Pro–15). Android Studio надає емулятори з різними конфігураціями вирізів (Google Pixel 3 XL, користувацький емулятор з cutout). Тестуйте в портретній та ландшафтній орієнтації, з клавіатурою та без неї, в Split View (iPad). Перевірте, що весь контент читабний та не перекритий.

Реальні пристрої: notch на симуляторі та на реальному пристрої може відрізнятися. Наприклад, симулятор iPhone 14 Pro показує Dynamic Island, але без реальної інтерактивності (Live Activities). Для Android punch-hole камера може не емулюватися точно. Найкращий спосіб — тестувати на реальних пристроях. Мінімальний набір: iPhone SE (без notch), iPhone 14 (з notch), iPhone 15 Pro (Dynamic Island), Android з punch-hole, Android зі суцільним екраном (Samsung Edge).

Інструменти: для iOS використовуйте Xcode View Debugger з опцією «Show Safe Area Insets» — він візуально покаже межі Safe Area. Для Android — Layout Inspector в Android Studio, що відображає WindowInsets та DisplayCutout на панелі Attributes. Також корисним є Accessibility Inspector для перевірки, що всі елементи всередині Safe Area доступні для VoiceOver/TalkBack. Не забувайте про iPad без notch, але з Home Indicator (нижній відступ ~21 pt) та закругленими кутами.

Часто задавані питання

Які розміри safeAreaInsets для iPhone з notch?

Для iPhone з notch (X–14) у портретній орієнтації: top = 44 pt, left = 0, right = 0, bottom = 34 pt (Home Indicator). Для iPhone з Dynamic Island (14 Pro–16): top = 54 pt, bottom = 34 pt. Для iPhone SE (без notch): top = 20 pt (стрічка статусу), bottom = 0 pt (якщо немає Home Indicator) або 21 pt (для моделей з Home Indicator). У ландшафті top = 0, left = 47 pt, right = 47 pt, bottom = 21 pt.

У чому різниця між Notch та Dynamic Island?

Notch — статичний виріз для камери та датчиків Face ID. Dynamic Island — програмно-апаратний елемент, що змінює форму та відображає сповіщення, таймери, Live Activities. Dynamic Island доступний на iPhone 14 Pro та новіших. Safe Area для Dynamic Island більша (top = 54 pt проти 44 pt для notch). Dynamic Island підтримує API ActivityKit для сторонніх розробників.

Як отримати відступ під виріз в Android?

У Android відступ під DisplayCutout отримується через WindowInsets. Виклик: decorView.rootWindowInsets.displayCutout?.safeInsetTop. Для API 28+ (Android 9). Режим відображення керується через window.attributes.layoutInDisplayCutoutMode: NEVER (відступ), SHORT_EDGES (відступ на короткому краю), ALWAYS (без відступу). Для punch-hole камер safeInsetTop дорівнює висоті стрічки статусу (~24 dp).

Чому iPhone з Notch у ландшафті показує чорні смуги?

У ландшафтній орієнтації iOS автоматично додає чорні смуги збоку екрану, щоб контент не відображався в зоні вирізу. Це системна поведінка, яка регулюється Safe Area insets (лівий/правий ~47 pt). Причина: у ландшафті «вуха» збоку від notch занадто малі для відображення корисного контенту. Для повноекранних додатків (відео, ігри) можна використовувати AVPlayerViewController з автоматичним керуванням плеєра.

Чи обов'язково підтримувати Safe Area в додатку?

Так, використання Safe Area є обов'язковим для всіх додатків, публікованих в App Store. Apple перевіряє це на ревю: якщо контент перекривається notch, закругленими кутами або Home Indicator, додаток відхиляється. На Android рекомендується використовувати WindowInsets для адаптації під виріз. Починаючи з Android 12, режим SHORT_EDGES є стандартним, і система автоматично додає відступи під виріз для додатків, що не використовують користувацькі макети.

Підсумки

  • Notch — виріз у верхньому частині екрану для камери та датчиків, з'явився в iPhone X (2017)
  • Safe Area — область екрану, гарантовано вільна від системних елементів інтерфейсу
  • iOS API — safeAreaInsets та safeAreaLayoutGuide для позиціонування контенту
  • Android API — DisplayCutout та WindowInsets для отримання відступів під виріз
  • Dynamic Island — еволюція notch в iPhone 14 Pro+, інтерактивний елемент з ActivityKit
  • Ландшафт — у ландшафтній орієнтації iOS додає чорні смуги для notch
  • Тестування — обов'язкова перевірка на пристроях з різними типами вирізу

Ми розробимо мобільний застосунок під ключ

IT Sectr створює застосунки для iOS та Android для стартапів і бізнесу з 2017 року. Ми проконсультуємо вас і запропонуємо найкраще рішення.

Обговорити проект

Читайте також