SafeAreaView — bu nima, React Native da Safe Area bilan joylashtirish

Muallif: IT Sectr Nashr etilgan: 2026-07-06 O'qish vaqti: 10 daq

SafeAreaView — kesiklari va yumaloqliklari bo'lgan qurilmalarda ekranning xavfsiz maydonini hisobga olgan holda joylashtirish uchun React Native komponenti. Notch va Dynamic Island ga ega iPhone da kontent kamera va ko'rsatkichlar bilan to'sib qo'yilishi mumkin. SafeAreaView avtomatik ravishda chekinishlar qo'shib, interfeysning tizim elementlari tomonidan kesilishining oldini oladi. Safe Area haqida batafsil Meta rasmiy hujjatlarida o'qing.

Asosiy

  • SafeAreaView — iOS va Android ekranining xavfsiz maydoni uchun avtomatik chekinishlar qo'shadigan komponent
  • Notch va Dynamic Island yuqori chekinishlarni talab qiladi, SafeAreaView ularni avtomatik hisoblaydi
  • Android — komponent holat satri va tizim navigatsiya tugmalarini hisobga oladi
  • Alternativlar: chekinishlarni moslashuvchan boshqarish uchun react-native-safe-area-context dan useSafeAreaInsets
  • Edge-to-edge displeylar to'g'ri joylashtirish uchun SafeAreaView dan majburiy foydalanishni talab qiladi

SafeAreaView nima?

SafeAreaView — kontentni tizim interfeysi elementlari (holat satri, Notch, Dynamic Island va tizim navigatsiya paneli) tomonidan to'sib qo'yilmasligi uchun avtomatik ravishda ichki chekinishlar (padding) qo'shadigan React Native komponenti. Komponent iOS uchun React Native 0.50 da paydo bo'ldi va keyinchalik Android uchun kengaytirildi.

iOS da SafeAreaView iOS 11 (2017) da paydo bo'lgan native UIView.safeAreaInsets dan foydalanadi. Android da komponent Android 5.0 (API 21) dan mavjud bo'lgan WindowInsets — tizim chekinishlarini hisobga oladi. Apple ma'lumotlariga ko'ra (2026), faol iPhone larning 92 foizi kesik yoki Dynamic Island ga ega displeyga ega.

Safe Area nima uchun kerak

Safe Area tushunchasi — Apple HIG (Human Interface Guidelines) tavsiyalarining bir qismidir. iPhone X (2017) dan oldin ekranning butun maydoni xavfsiz edi. Notch paydo bo'lishi bilan Apple kontent joylashmasligi kerak bo'lgan maydonlarni belgiladi: kamera kesigi, vaqt va batareya ko'rsatkichi, uy ko'rsatkichi. Android 2018 yilda kesikli displeylar paydo bo'lishi bilan o'xshash tushunchani joriy qildi.

Safe Area iOS va Android da qanday ishlaydi

iOS da SafeAreaView native layout-guide dan safeAreaInsets ni o'qiydi. Yuqori chekinish holat satri balandligini (Notch li iPhone uchun odatda 44 yoki 50 punkt) o'z ichiga oladi. Pastki chekinish — Uy Ko'rsatkichi (Home Indicator) uchun 34 punkt. Android WindowInsets dan foydalanadi — holat satri uchun yuqori chekinish va tizim navigatsiyasi uchun pastki chekinish.

PlatformaYuqori chekinishPastki chekinishManba
iOS (Notch)44-50 pt34 ptsafeAreaInsets.top / .bottom
iOS (Notch yo'q)20 pt0 ptsafeAreaInsets.top / .bottom
Android (kesikli)24-48 dp24-48 dpWindowInsets.systemBarsInsets
Android (kesiksiz)24 dp0 dpWindowInsets.statusBarsInsets

Muhim: SafeAreaView padding ni avtomatik qo'llaydi, lekin faqat ildiz konteyner uchun. Ichma-ich komponentlar himoya olmaydi — har bir ekran o'z SafeAreaView iga ega bo'lishi kerak. Modal oynalar va BottomSheet uchun chekinishlarni alohida hisobga oling.

Notch, Dynamic Island va tizim panellari

Notch — ekranning yuqori qismida kamera va sensorlarni o'z ichiga olgan apparat kesigi. iPhone X (2017) da paydo bo'lgan. Dynamic Island — iPhone 14 Pro va undan yangi modellarda Notch ni interaktiv element bilan almashtiruvchi dasturiy-apparat maydoni. Ikkalasi ham 50-56 pt yuqori chekinishni talab qiladi.

Android da kesiklar turli shakllarda bo'ladi: tomchi shaklidagi, burchakdagi teshik (punch-hole), kamera ostidagi chiziq. SafeAreaView Android da kesik shaklini hisobga oluvchi WindowInsets dan foydalanadi. Gorizontal yo'nalishdagi ilovalar uchun kontent tizim elementlari tomonidan to'sib qo'yilmasligi uchun yon chekinishlar qo'shiladi.

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 yondashuvi (Android 15+) kontentni tizim panellari ostida chizishni, lekin interaktiv elementlar uchun chekinishlarni hisobga olishni tavsiya qiladi. SafeAreaView bu muvozanatni saqlashga yordam beradi: fon panellar ostida chiziladi, tugmalar va matn esa xavfsiz zonada joylashadi.

SafeAreaView dan foydalanish va alternativlar

SafeAreaView — kontentni himoya qilishning eng oddiy usuli, lekin har doim ham moslashuvchan emas. Komponent barcha tomonlarga bir xil chekinishlarni qo'llaydi, bu har xil qirralar uchun turli padding kerak bo'lganda noqulay. Masalan, yon chekinishlar kerak bo'lmasligi mumkin, pastki chekinish esa faqat tugma uchun.

Asosiy alternativlar: useSafeAreaInsets react-native-safe-area-context dan (eng moslashuvchan yechim), Android da StatusBar.currentHeight, qurilma modelini qo'lda tekshirish bilan Platform.OS. Murakkab holatlar uchun umumiy konteyner uchun SafeAreaView va alohida elementlar uchun useSafeAreaInsets kombinatsiyasidan foydalaning.

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 kutubxonasi — React Native da Safe Area bilan ishlash uchun de-fakto standartdir. Expo, React Navigation va aksariyat UI to'plamlari tomonidan qo'llab-quvvatlanadi. Funktsional va sinf yondashuvlari uchun ham hook, ham Consumer komponentini taqdim etadi.

To'liq nazorat uchun react-native-safe-area-context

react-native-safe-area-context — o'rnatilgan SafeAreaView dan ko'ra moslashuvchanroq API ni taqdim etuvchi kutubxona. Asosiy afzalligi — useSafeAreaInsets hook i orqali alohida chekinish qiymatlariga (top, bottom, left, right) kirish imkoniyati, bu ularni tanlab qo'llash imkonini beradi.

Kutubxona shuningdek SafeAreaProvider — ilovaning yuqori darajasida majburiy bo'lgan komponentni taqdim etadi. U ekran aylantirilganda yoki klaviatura ochilganda tizim chekinishlaridagi o'zgarishlarga obuna bo'ladi. React Navigation ushbu kutubxonadan standart sifatida foydalanadi.

SafeAreaView react-native-safe-area-context dan o'rnatilganidan farq qiladi: ko'proq qurilmalarda ishlaydi va chekinish o'zgarishlari animatsiyasini qo'llab-quvvatlaydi. Yangi loyiha uchun ushbu kutubxonani bog'liqlik sifatida o'rnatish va uning SafeAreaView idan o'rnatilgan o'rniga foydalanish tavsiya etiladi.

SafeAreaView bilan ishlashda odatiy xatolar

SafeAreaView ko'pincha noto'g'ri ishlatiladi. Birinchi xato — har bir komponentni SafeAreaView ga o'rash, bu ikki tomonlama chekinishlarni keltirib chiqaradi. Qoida: ekranning ildiz View i uchun bitta SafeAreaView. Ichma-ich komponentlar chekinishlarni Flex joylashtirish orqali meros qilib oladi.

Ikkinchi xato — Android ni e'tiborsiz qoldirish. Android da SafeAreaView turli OT versiyalarida farq qilishi mumkin bo'lgan WindowInsets dan foydalanadi. Android 15+ da tizim panellari shaffof bo'lishi mumkin va chekinishlar o'zgaradi. SafeAreaView ni har doim real qurilmalarda sinab ko'ring, faqat emulyatorda emas.

Uchinchi xato — qattiq o'rnatilgan padding. Hech qachon Platform.OS === 'ios' ? 44 : 24 dan foydalanmang — chekinish qiymatlari modellar va OT versiyalari o'rtasida o'zgaradi. Har doim tizim API laridan foydalaning: safeAreaInsets yoki useSafeAreaInsets. iPhone 15 Pro dagi Dynamic Island iPhone X dagi Notch dan farqli chekinishlarga ega.

Tez-tez beriladigan savollar

SafeAreaView barcha qurilmalarda ishlaydimi?

SafeAreaView iOS 11+ va Android 5+ da ishlaydi. Eski qurilmalarda chekinishlar nolga teng bo'ladi, bu xatolarga sabab bo'lmaydi, lekin qo'lda sozlashni talab qilishi mumkin. Maksimal moslik uchun react-native-safe-area-context dan foydalaning.

SafeAreaView ni faqat yuqorida, pastki chekinishsiz qanday ishlatish mumkin?

O'rnatilgan SafeAreaView tomonlarni tanlashga imkon bermaydi. react-native-safe-area-context dan useSafeAreaInsets dan foydalaning: insets.top ni oling va paddingTop ni qo'llang. Yoki pastki chekinishni kompensatsiya qilish uchun SafeAreaView ni manfiy margin bilan View ga o'rang.

Nega SafeAreaView Android da chekinish qo'shmaydi?

Ba'zi Android qurilmalarida ishlab chiqaruvchi sozlamalari tufayli SafeAreaView ishlamasligi mumkin. React Native 0.64+ dan foydalanayotganingizni tekshiring. Kafolatlangan ishlash uchun react-native-safe-area-context ni o'rnating va ilovani SafeAreaProvider ga o'rang.

Ekran yo'nalishi SafeAreaView ga ta'sir qiladimi?

Ha, ekran aylantirilganda SafeAreaView chekinishlarni qayta hisoblaydi. Notch li iPhone da gorizontal yo'nalishda yon chekinishlar 0 bo'lishi mumkin, yuqori chekinish esa qoladi. react-native-safe-area-context komponenti avtomatik ravishda yo'nalish o'zgarishlariga obuna bo'ladi.

SafeAreaView StatusBar dan qanday farq qiladi?

SafeAreaView kontent chekinishlarini barcha tizim elementlaridan (holat satri, Notch, uy ko'rsatkichi) boshqaradi. StatusBar — holat satrining rangi, uslubi va ko'rinishini boshqaruvchi komponent. Ular turli vazifalarni hal qiladi va birgalikda ishlatilishi mumkin.

Xulosa

  • SafeAreaView — iOS (Notch, Dynamic Island) va Android (holat satri, navigatsiya) uchun tizim chekinishlarini avtomatik hisobga oluvchi React Native komponenti
  • Ish prinsipi — safeAreaInsets (iOS) yoki WindowInsets (Android) ni o'qish va ularni ildiz konteynerga padding sifatida qo'llash
  • Notch va Dynamic Island 44-56 pt yuqori chekinishlarni, iPhone uy ko'rsatkichi uchun 34 pt pastki chekinishni talab qiladi
  • react-native-safe-area-context — chekinishlarni tanlab qo'llash uchun useSafeAreaInsets hook i bilan moslashuvchan alternativ
  • Odatiy xatolar: ikki tomonlama chekinishlar, tizim API lari o'rniga qattiq padding, Android xususiyatlarini e'tiborsiz qoldirish
  • Edge-to-edge displeylar interaktiv elementlarni to'g'ri joylashtirish uchun SafeAreaView ni talab qiladi
  • Ekran uchun bitta SafeAreaView — ichma-ich o'rashlar joylashtirishni buzadigan ikki tomonlama chekinishlar yaratadi

Biz kalit topshirig'i bilan mobil ilovani ishlab chiqamiz

IT Sectr 2017-yildan beri startaplar va korxonalar uchun iOS va Android ilovalarini yaratadi. Biz sizga maslahat beramiz va eng yaxshi yechimni taklif qilamiz.

Loyihani muhokama qilish

Shuningdek o'qing