Notch — podstawy, adaptacja interfejsu do wycięcia ekranu

Autor: IT Sectr Opublikowano: 2026-02-28 Czas czytania: 10 min

Notch — wycięcie w górnej części wyświetlacza iPhone'a, mieszczące przedni aparat, głośnik i czujniki Face ID. Po raz pierwszy zaprezentowany w iPhone X (2017), notch zmienił podejście do projektowania interfejsów mobilnych: obszar ekranu wokół wycięcia stał się "martwą strefą" dla treści. Aby dostosować interfejs, Apple wprowadziło Safe Area — marginesy gwarantujące, że treść nie jest zasłaniana przez notch, zaokrąglone rogi i wskaźnik Home Indicator. W Androidzie podobną koncepcję realizuje się przez safeAreaInsets w iOS oraz displayCutout + WindowInsets w Androidzie.

Najważniejsze

  • Safe Area — obszar ekranu gwarantująco wolny od notcha, zaokrąglonych rogów i Home Indicator
  • safeAreaInsets — właściwość UIView w iOS, zwracająca marginesy Safe Area dla każdej krawędzi
  • displayCutout — klasa Androida opisująca wycięcie lub zaokrąglone rogi na ekranie
  • WindowInsets — system Androida do pobierania marginesów pod elementami systemowymi (pasek stanu, notch)
  • Projektowanie adaptacyjne — interfejs musi poprawnie wyświetlać się na urządzeniach z notchem i bez niego

Czym jest Notch?

Notch (wycięcie, "grzywka") — obszar w górnej części ekranu smartfona, w którym umieszczono przedni aparat, głośnik słuchawkowy, czujniki zbliżeniowe i oświetlenia, a dla iPhone X i nowszych — kamerę na podczerwień Face ID, projektor punktów i oświetlacz (system TrueDepth camera). Notch został wprowadzony w celu zwiększenia użytecznej powierzchni ekranu przy zachowaniu wszystkich niezbędnych czujników — zamiast górnej ramki (bezel) wyświetlacz rozszerza się w górę wokół wycięcia.

Wymiary: standardowy notch iPhone'a ma szerokość ~34 mm (~209 pt w orientacji pionowej dla modeli 6.1 cala) i wysokość ~5 mm (~30 pt). Po bokach notcha znajdują się "uszy" (ears) — małe fragmenty ekranu po prawej i lewej stronie wycięcia. Prawe "ucho" zwykle pokazuje godzinę, wskaźnik baterii i Wi-Fi; lewe — operatora i stan. W orientacji poziomej iOS ukrywa notch czarnym paskiem na całej szerokości paska stanu — treść nie jest wyświetlana w strefie wycięcia.

Nie tylko iPhone: koncepcję notcha zapożyczyło wielu producentów Androida. Google Pixel 3 XL, OnePlus 6, Huawei P20, Xiaomi Mi 8 — wszystkie miały wycięcie. Niektórzy producenci poszli dalej: wycięcie "kroplowe" (waterdrop notch), kamera punch-hole (otwór w ekranie), kamera wysuwana (suwak). Współczesne flagowce Androida (Samsung Galaxy S23+, Google Pixel 8 Pro) używają punch-hole — minimalnego otworu na aparat w górnej części ekranu, bez szerokiego wycięcia.

Safe Area w iOS: safeAreaInsets

Safe Area — to prostokątny obszar wewnątrz widoku, który gwarantująco nie jest zasłaniany przez systemowe elementy interfejsu: notch, zaokrąglone rogi ekranu (corner radius), Home Indicator (wskaźnik domu), pasek zakładek (tab bar) i pasek nawigacyjny (navigation bar). Rozmiary Safe Area są zwracane przez właściwość UIView.safeAreaInsets — UIEdgeInsets z wartościami top, left, bottom, right. Dla iPhone'a z notchem górny wcięcie = ~44 pt (pionowo) lub ~0 pt (poziomo z czarnym paskiem).

swift
// Użycie safeAreaInsets do pozycjonowania treści
class NotchAwareViewController: UIViewController {

    override func viewDidLayoutSubviews() {
        super.viewDidLayoutSubviews()

        // Odczytanie odstępów Safe Area
        let safeArea = self.view.safeAreaInsets

        // Logowanie wartości do debugowania
        print("Górny wcięcie: \(safeArea.top)")    // ~44 pt z notchem
        print("Dolny wcięcie: \(safeArea.bottom)") // ~34 pt z Home Indicator

        // Pozycjonowanie tytułu z uwzględnieniem 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
        )
    }

    // Obsługa zmian Safe Area (obrót, Multi-Tasking)
    override func viewSafeAreaInsetsDidChange() {
        super.viewSafeAreaInsetsDidChange()
        viewDidLayoutSubviews() // Przeliczenie layoutu
    }
}

Auto Layout i Safe Area: w Interface Builder używaj "Safe Area" jako celu anchor zamiast "Superview". Dla programistycznego layoutu używaj safeAreaLayoutGuide: let guide = view.safeAreaLayoutGuide; titleLabel.topAnchor.constraint(equalTo: guide.topAnchor). iOS automatycznie aktualizuje safeAreaInsets przy obrocie urządzenia, przejściu do Split View na iPadzie, wyświetlaniu/ukrywaniu klawiatury i zmianie orientacji. Wszystkie standardowe kontrolery UIKit (UINavigationController, UITabBarController) już uwzględniają Safe Area. Niestandardowe widoki i kontrolery muszą jawnie używać safeAreaInsets.

Notch w Androidzie: DisplayCutout i WindowInsets

DisplayCutout — klasa Android SDK, dodana w API 28 (Android 9.0), opisująca obszar wycięcia na ekranie. Można ją uzyskać przez WindowInsets.displayCutout(). Klasa zwraca boundingBoxList — listę prostokątów opisujących wycięcie(-a) oraz safeInsetTop/safeInsetBottom/safeInsetLeft/safeInsetRight — minimalne marginesy do bezpiecznego wyświetlania treści. Android obsługuje różne konfiguracje wycięć: centralne (jak iPhone), boczne (aparat w rogu), podwójne (dwa aparaty), punch-hole.

kotlin
// Adaptacja interfejsu do DisplayCutout w Activity
class NotchAwareActivity : AppCompatActivity() {

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

        // Zezwalamy na wyświetlanie treści w strefie wycięcia (jeśli potrzebne)
        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)

        // Pobranie DisplayCutout przez WindowInsets
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P && hasFocus) {
            val cutout = window.decorView.rootWindowInsets.displayCutout
            val safeTop = cutout?.safeInsetTop ?: 0

            // Ustawiamy odstęp dla górnej treści
            headerView.updatePadding(top = safeTop)
        }
    }
}

Tryby wyświetlania (layoutInDisplayCutoutMode): ALWAYS — treść może być wyświetlana w strefie wycięcia (dla aplikacji pełnoekranowych, wideo, gier); NEVER — treść nigdy nie zachodzi na wycięcie, system dodaje margines; SHORT_EDGES — treść jest wyświetlana w strefie wycięcia tylko na krótkim boku (dla aplikacji pionowych z notchem u góry). Standardowy tryb — SHORT_EDGES (od Androida 12). Dla kamery punch-hole wycięcie jest mniejsze i wiele aplikacji używa ALWAYS dla maksymalnego wykorzystania ekranu.

Ewolucja Notch: od iPhone X do Dynamic Island

iPhone X (2017) — pierwszy smartfon Apple z notchem. Wycięcie zawierało kamerę TrueDepth dla Face ID — system składający się z kamery na podczerwień, projektora punktów (Dot Projector) i oświetlacza (Flood Illuminator). Wymiary wycięcia: ~34 mm × 5 mm. W iOS 11 Apple wprowadziło Safe Area do adaptacji aplikacji. Użytkownicy podzielili się: jedni zaakceptowali notch jako konieczność dla Face ID, inni krytykowali za "okrojony" ekran.

iPhone 13 (2021) — Apple zmniejszyło notch o 20% poprzez przesunięcie głośnika do górnej ramki ekranu. To był ostatni klasyczny notch. iPhone 14 i 14 Plus (2022) zachowały zmniejszony notch. iPhone 14 Pro i Pro Max wprowadziły Dynamic Island — elipsoidalne wycięcie łączące aparat i czujniki Face ID, które dynamicznie zmienia kształt i wyświetla powiadomienia systemowe (timer, muzyka, podłączenie AirPods). Dynamic Island stało się platformą programową z własnym API (ActivityKit, Live Activities).

GeneracjaTyp wycięciaCechySafe Area Top
iPhone X–XS (2017–2018)Duży notchFace ID, 34×5 mm44 pt
iPhone XR (2018)NotchTouch ID, mniejszy notch44 pt
iPhone 11 (2019)NotchFace ID, szerokie wycięcie44 pt
iPhone 12 (2020)NotchGłośnik przesunięty do ramki44 pt
iPhone 13 (2021)Zmniejszony notchO 20% mniejszy44 pt
iPhone 14 / 14 Plus (2022)Zmniejszony notchBez Face ID (14 Plus)44 pt
iPhone 14 Pro (2022)Dynamic IslandAdaptacyjne wycięcie54 pt
iPhone 15–16 (2023–2024)Dynamic IslandActivityKit, Live Activities54 pt

Dynamic Island — to nie tylko wycięcie, ale interaktywny element interfejsu. Po podłączeniu AirPods wysepka rozszerza się, pokazując ikonę i status. Wezwanie taksówki (Uber) wyświetla czas przyjazdu. Timer jest widoczny na wysepce po zminimalizowaniu aplikacji. Dynamic Island jest dostępne na iPhone 14 Pro/Pro Max, iPhone 15/15 Pro/15 Pro Max, iPhone 16/16 Pro/16 Pro Max. Safe Area dla Dynamic Island: górny wcięcie = 54 pt (o 10 pt więcej niż klasyczny notch).

Zasady projektowania interfejsów z wycięciem

Nigdy nie chowaj treści za notchem — używaj Safe Area lub DisplayCutout do automatycznego obliczania marginesów. Nie ustawiaj stałych wartości marginesów (np. 44 pt) — różnią się one na różnych urządzeniach i w różnych orientacjach. Zawsze używaj systemowych API do odczytu Safe Area: safeAreaInsets w iOS, windowInsets.displayCutout w Androidzie. Gwarantuje to poprawne wyświetlanie na wszystkich urządzeniach: iPhone SE (bez notcha), iPhone 14 Pro (notch), iPhone 15 (Dynamic Island), iPad (bez notcha, ale z Home Indicator).

Orientacja pozioma — szczególna strefa ryzyka. Na iPhonie z notchem w poziomie iOS automatycznie dodaje czarny pasek na całej szerokości paska stanu (treść po lewej i prawej stronie notcha nie jest wyświetlana). Robi to systemowy Safe Area inset = 0 top, ale zwiększone left/right insets (~47 pt). Nie próbuj wyłączać tego zachowania — App Store odrzuci aplikację używającą "zabronionych" stref ekranu dla treści w poziomie. Dla wideo pełnoekranowego używaj AVPlayerViewController, który automatycznie rozmieszcza elementy sterujące poza strefą notcha.

ZasadaiOSAndroid
API dla marginesówsafeAreaInsets / safeAreaLayoutGuideWindowInsets.displayCutout.safeInsetTop
Adaptacja do obrotuviewSafeAreaInsetsDidChangeonWindowFocusChanged
Tryb pełnoekranowyprefersStatusBarHidden = trueSYSTEM_UI_FLAG_FULLSCREEN
Treść paska stanuAutomatycznie w "uszach" koło notchaPrzez layoutInDisplayCutoutMode
Orientacja poziomaCzarny pasek (automatycznie)Marginesy z WindowInsets
Wideo/gryAVPlayerViewController (bezpiecznie)LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS

Tło i pasek stanu: jeśli używasz niestandardowego koloru tła, powinien on wypełniać cały obszar ekranu, włączając strefę za notchem. Nie rysuj treści na pasku stanu — używaj Safe Area. Dla trybu ciemnego upewnij się, że pasek stanu jest czytelny: ustaw preferredStatusBarStyle zgodnie ze stylem tła (.default dla ciemnego tekstu na jasnym tle, .lightContent dla jasnego tekstu na ciemnym tle).

Testowanie adaptacji do Notch

Symulatory i emulatory: Xcode udostępnia symulatory wszystkich modeli iPhone'a z notchem (iPhone X–14) i Dynamic Island (iPhone 14 Pro–15). Android Studio udostępnia emulatory z różnymi konfiguracjami wycięć (Google Pixel 3 XL, niestandardowy emulator z cutout). Testuj w orientacji pionowej i poziomej, z klawiaturą i bez, w Split View (iPad). Sprawdź, czy cała treść jest czytelna i niezasłonięta.

Rzeczywiste urządzenia: notch na symulatorze i na prawdziwym urządzeniu może się różnić. Na przykład symulator iPhone 14 Pro pokazuje Dynamic Island, ale bez rzeczywistej interaktywności (Live Activities). W Androidzie kamera punch-hole może nie być dokładnie emulowana. Najlepszym sposobem jest testowanie na prawdziwych urządzeniach. Minimalny zestaw: iPhone SE (bez notcha), iPhone 14 (notch), iPhone 15 Pro (Dynamic Island), Android z punch-hole, Android z ekranem krawędziowym (Samsung Edge).

Narzędzia: dla iOS używaj Xcode View Debugger z opcją "Show Safe Area Insets" — wizualnie pokaże granice Safe Area. Dla Androida — Layout Inspector w Android Studio, wyświetlający WindowInsets i DisplayCutout na panelu Attributes. Przydatny jest również Accessibility Inspector do sprawdzenia, czy wszystkie elementy w Safe Area są dostępne dla VoiceOver/TalkBack. Nie zapominaj o iPadzie bez notcha, ale z Home Indicator (dolny margines ~21 pt) i zaokrąglonymi rogami.

Często zadawane pytania

Jaki jest rozmiar safeAreaInsets dla iPhone'a z notchem?

Dla iPhone'a z notchem (X–14) w orientacji pionowej: top = 44 pt, left = 0, right = 0, bottom = 34 pt (Home Indicator). Dla iPhone'a z Dynamic Island (14 Pro–16): top = 54 pt, bottom = 34 pt. Dla iPhone SE (bez notcha): top = 20 pt (pasek stanu), bottom = 0 pt (jeśli brak Home Indicator) lub 21 pt (dla modeli z Home Indicator). W poziomie top = 0, left = 47 pt, right = 47 pt, bottom = 21 pt.

Jaka jest różnica między Notch a Dynamic Island?

Notch — statyczne wycięcie na aparat i czujniki Face ID. Dynamic Island — element programowo-sprzętowy zmieniający kształt i wyświetlający powiadomienia, timery, Live Activities. Dynamic Island jest dostępne na iPhone 14 Pro i nowszych. Safe Area dla Dynamic Island jest większe (top = 54 pt vs 44 pt dla notcha). Dynamic Island obsługuje API ActivityKit dla zewnętrznych programistów.

Jak uzyskać margines pod wycięcie w Androidzie?

W Androidzie margines pod DisplayCutout uzyskuje się przez WindowInsets. Wywołanie: decorView.rootWindowInsets.displayCutout?.safeInsetTop. Dla API 28+ (Android 9). Tryb wyświetlania jest zarządzany przez window.attributes.layoutInDisplayCutoutMode: NEVER (margines), SHORT_EDGES (margines na krótkim boku), ALWAYS (bez marginesu). Dla kamery punch-hole safeInsetTop jest równy wysokości paska stanu (~24 dp).

Dlaczego w orientacji poziomej iPhone z Notchem pokazuje czarne paski?

W orientacji poziomej iOS automatycznie dodaje czarne paski po bokach ekranu, aby treść nie była wyświetlana w strefie wycięcia. Jest to zachowanie systemowe regulowane przez Safe Area insets (left/right ~47 pt). Powód: w poziomie "uszy" po bokach notcha są zbyt małe do wyświetlania użytecznej treści. Dla aplikacji pełnoekranowych (wideo, gry) można użyć AVPlayerViewController z automatycznym zarządzaniem odtwarzaczem.

Czy konieczne jest wspieranie Safe Area w aplikacji?

Tak, używanie Safe Area jest obowiązkowe dla wszystkich aplikacji publikowanych w App Store. Apple sprawdza to podczas recenzji: jeśli treść jest zasłaniana przez notch, zaokrąglone rogi lub Home Indicator, aplikacja zostaje odrzucona. W Androidzie zalecenie: używaj WindowInsets do adaptacji pod wycięcie. Od Androida 12 tryb SHORT_EDGES jest standardowy i system automatycznie dodaje marginesy pod wycięcie dla aplikacji nieużywających niestandardowych layoutów.

Podsumowanie

  • Notch — wycięcie w górnej części ekranu na aparat i czujniki, pojawił się w iPhone X (2017)
  • Safe Area — obszar ekranu gwarantująco wolny od systemowych elementów interfejsu
  • iOS API — safeAreaInsets i safeAreaLayoutGuide do pozycjonowania treści
  • Android API — DisplayCutout i WindowInsets do pobierania marginesów pod wycięcie
  • Dynamic Island — ewolucja notcha w iPhone 14 Pro+, interaktywny element z ActivityKit
  • Orientacja pozioma — w poziomie iOS dodaje czarne paski dla notcha
  • Testowanie — obowiązkowe sprawdzenie na urządzeniach z różnymi typami wycięcia

Opracujemy aplikację mobilną pod klucz

IT Sectr tworzy aplikacje na iOS i Androida dla startupów i firm od 2017 roku. Doradzimy Ci i zaproponujemy najlepsze rozwiązanie.

Omów projekt

Przeczytaj również