SafeAreaView — шта је то, распоред са Safe Area у React Native

Аутор: IT Sectr Објављено: 2026-07-06 Време читања: 10 мин

SafeAreaView — React Native компонента за распоред са уважавањем безбедне области екрана на уређајима са изрезима и заобљењима. На iPhone-у са Notch и Dynamic Island садржај може бити прекривен камером и индикаторима. SafeAreaView аутоматски додаје размаке, спречавајући пресецање интерфејса системским елементима. Више о Safe Area прочитајте у званичној Meta документацији.

Главно

  • SafeAreaView — компонента која аутоматски додаје размаке за безбедну област екрана iOS и Android
  • Notch и Dynamic Island захтевају горње размаке које SafeAreaView израчунава аутоматски
  • Android — компонента узима у обзир статусну траку и системска дугмад за навигацију
  • Алтернативе: useSafeAreaInsets из react-native-safe-area-context за флексибилну контролу размака
  • Edge-to-edge дисплеји захтевају обавезно коришћење SafeAreaView за исправан распоред

Шта је SafeAreaView?

SafeAreaView — React Native компонента која аутоматски додаје унутрашње размаке (padding) како садржај не би био прекривен системским елементима интерфејса: статусном траком, Notch-ом, Dynamic Island-ом и системским навигационим панелом. Компонента се појавила у React Native 0.50 за iOS и касније је проширена за Android.

На iOS-у SafeAreaView користи изворни UIView.safeAreaInsets, који се појавио у iOS 11 (2017). На Android-у компонента узима у обзир WindowInsets — системске размаке доступне од Android 5.0 (API 21). Према Apple подацима (2026), 92% активних iPhone-а има екран са изрезом или Dynamic Island-ом.

Зашто је Safe Area потребна

Концепт Safe Area — део Apple HIG (Human Interface Guidelines) препорука. Пре iPhone X (2017) целокупан простор екрана је био безбедан. Са појавом Notch-а, Apple је дефинисао области где садржај не треба да се налази: изрез камере, индикатор времена и батерије, почетни индикатор. Android је увео аналоган концепт са појавом екрана са изрезом 2018. године.

Како Safe Area ради на iOS и Android

На iOS-у SafeAreaView чита safeAreaInsets из изворног layout-guide-а. Горњи размак укључује висину статусне траке (обично 44 или 50 pt за iPhone са Notch-ом). Доњи размак — 34 pt за почетни индикатор (Home Indicator). Android користи WindowInsets — горњи размак за статусну траку и доњи за системску навигацију.

ПлатформаГорњи размакДоњи размакИзвор
iOS (Notch)44-50 pt34 ptsafeAreaInsets.top / .bottom
iOS (без Notch-а)20 pt0 ptsafeAreaInsets.top / .bottom
Android (са изрезом)24-48 dp24-48 dpWindowInsets.systemBarsInsets
Android (без изреза)24 dp0 dpWindowInsets.statusBarsInsets

Важно: SafeAreaView примењује padding аутоматски, али само за корени контејнер. Угнежђене компоненте не добијају заштиту — сваки екран треба да има свој SafeAreaView. За модалне прозоре и BottomSheet узмите у обзир размаке одвојено.

Notch, Dynamic Island и системске панеле

Notch — хардверски изрез у горњем делу екрана који садржи камеру и сензоре. Појавио се у iPhone X (2017). Dynamic Island — софтверско-хардверска област iPhone 14 Pro и новијих која замењује Notch интерактивним елементом. Оба захтевају горњи размак од 50-56 pt.

На Android-у изрези имају различите облике: капљичасти, рупа у углу (punch-hole), трака испод камере. SafeAreaView на Android-у користи WindowInsets који узимају у обзир облик изреза. За апликације у пејзажној оријентацији додају се бочни размаци како садржај не би био прекривен системским елементима.

js
import React from 'react';
import { SafeAreaView, View, Text } from 'react-native';

const App = () => (
  <SafeAreaView style={{ flex: 1 }}>
    <View style={styles.content}>
      <Text>Content is safe from Notch and system bars</Text>
    </View>
  </SafeAreaView>
);

Edge-to-edge приступ (Android 15+) препоручује цртање садржаја испод системских панела, али са уважавањем размака за интерактивне елементе. SafeAreaView помаже у одржавању ове равнотеже: позадина се црта испод панела, а дугмад и текст — у безбедној зони.

Коришћење и алтернативе SafeAreaView

SafeAreaView — најједноставнији начин заштите садржаја, али не увек флексибилан. Компонента примењује исте размаке на све стране, што је непрактично када је потребан различит padding за различите ивице. На пример, бочни размаци могу бити непотребни, а доњи — само за дугме.

Главне алтернативе: useSafeAreaInsets из react-native-safe-area-context (најфлексибилније решење), StatusBar.currentHeight на Android-у, Platform.OS са ручном провером модела уређаја. За сложене случајеве користите комбинацију SafeAreaView за општи контејнер и useSafeAreaInsets за појединачне елементе.

js
import { useSafeAreaInsets } from 'react-native-safe-area-context';

const CustomHeader = () => {
  const insets = useSafeAreaInsets();

  return (
    <View style={{ paddingTop: insets.top }}>
      <Header />
    </View>
  );
};

Библиотека react-native-safe-area-context — дефакто стандард за рад са Safe Area у React Native. Подржана је од Expo, React Navigation и већине UI комплета. Пружа и hook и Consumer компоненту за функционални и класни приступ.

react-native-safe-area-context за потпуну контролу

react-native-safe-area-context — библиотека која пружа флексибилнији API од уграђеног SafeAreaView-а. Главна предност — приступ појединачним вредностима размака (top, bottom, left, right) преко hook-а useSafeAreaInsets, што омогућава њихову селективну примену.

Библиотека такође пружа SafeAreaProvider — компоненту која је обавезна на врху апликације. Она се претплаћује на промене системских размака при ротацији екрана или отварању тастатуре. React Navigation подразумевано користи ову библиотеку.

SafeAreaView из react-native-safe-area-context се разликује од уграђеног: ради на већем броју уређаја и подржава анимацију промене размака. За нови пројекат препоручује се инсталирање ове библиотеке као зависности и коришћење њеног SafeAreaView-а уместо уграђеног.

Типичне грешке при раду са SafeAreaView

SafeAreaView се често користи неправилно. Прва грешка — облагање сваке компоненте у SafeAreaView, што ствара двоструке размаке. Правило: један SafeAreaView на корени View екрана. Угнежђене компоненте наслеђују размаке кроз Flex распоред.

Друга грешка — игнорисање Android-а. На Android-у SafeAreaView користи WindowInsets, који могу да се разликују на различитим верзијама ОС-а. На Android 15+ системске панеле могу бити провидне, а размаци се мењају. Увек тестирајте SafeAreaView на правим уређајима, не само у емулатору.

Трећа грешка — чврсто подешен padding. Никада не користите Platform.OS === 'ios' ? 44 : 24 — вредности размака се мењају између модела и верзија ОС-а. Увек користите системске API-је: safeAreaInsets или useSafeAreaInsets. Dynamic Island на iPhone 15 Pro има другачије размаке од Notch-а на iPhone X.

Често постављана питања

SafeAreaView ради на свим уређајима?

SafeAreaView ради на iOS 11+ и Android 5+. На старијим уређајима размаци ће бити нула, што не изазива грешке, али може захтевати ручно подешавање. За максималну компатибилност користите react-native-safe-area-context.

Како користити SafeAreaView само горе, без доњег размака?

Уграђени SafeAreaView не дозвољава избор страна. Користите useSafeAreaInsets из react-native-safe-area-context: узмите insets.top и примените paddingTop. Или умотајте SafeAreaView у View са негативним margin-ом за компензацију доњег размака.

Зашто SafeAreaView не додаје размаке на Android-у?

На неким Android уређајима SafeAreaView можда не ради због подешавања произвођача. Проверите да користите React Native 0.64+. За гарантовани рад инсталирајте react-native-safe-area-context и умотајте апликацију у SafeAreaProvider.

Да ли оријентација екрана утиче на SafeAreaView?

Да, при ротацији екрана SafeAreaView поново израчунава размаке. У пејзажној оријентацији на iPhone-у са Notch-ом бочни размаци могу бити 0, а горњи остаје. Компонента react-native-safe-area-context аутоматски се претплаћује на промене оријентације.

Чиме се SafeAreaView разликује од StatusBar-а?

SafeAreaView управља размацима садржаја од свих системских елемената (статусна трака, Notch, почетни индикатор). StatusBar — компонента за контролу боје, стила и видљивости статусне траке. Они решавају различите задатке и могу се користити заједно.

Резиме

  • SafeAreaView — React Native компонента за аутоматско уважавање системских размака на iOS (Notch, Dynamic Island) и Android (статусна трака, навигација)
  • Принцип рада — читање safeAreaInsets (iOS) или WindowInsets (Android) и њихова примена као padding на корени контејнер
  • Notch и Dynamic Island захтевају горње размаке 44-56 pt, доњи размак 34 pt за почетни индикатор iPhone-а
  • react-native-safe-area-context — флексибилнија алтернатива са hook-ом useSafeAreaInsets за селективну примену размака
  • Типичне грешке: двоструки размаци, чврсто подешен padding уместо системских API-ја, игнорисање специфичности Android-а
  • Edge-to-edge дисплеји захтевају SafeAreaView за исправно постављање интерактивних елемената
  • Један SafeAreaView по екрану — угнежђена облагања стварају двоструке размаке који кваре распоред

Развићемо мобилну апликацију под кључ

IT Sectr креира iOS и Android апликације за стартапе и предузећа од 2017. године. Саветоваћемо вас и предложити најбоље решење.

Разговарајте о пројекту

Прочитајте такође