SafeAreaView ایک React Native کمپوننٹ ہے جو نوچ اور گول کونوں والے آلات پر سکرین کے محفوظ علاقے کے لیے لی آؤٹ تیار کرتا ہے۔ Notch اور Dynamic Island والے iPhones پر، کیمرا اور اشاری کے ذریعے مواد چھپ سکتا ہے۔ SafeAreaView خودکار طور پڑ پیڈنگ کا اضافہ کرتا ہے، جو سرف انٹرفیس کو سسٹم عناصر سے کٹنے سے روکتا ہے۔ Safe Area کے بارے میں مزید جاننے کے لیے Meta کی سرکاری دستاویز دیکھیں۔
اہم نکات
SafeAreaView ایک React Native کمپوننٹ ہے جو خودکار طور پڑ اندرونی پیڈنگ کا اضافہ کرتا ہے تاکہ مواد سسٹم انٹرفیس عناصر: اسٹیٹس بار، 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% فعال iPhones میں نوچ یا Dynamic Island کے ساتھ ڈسپلے ہے۔
Safe Area کا تصور Apple HIG (Human Interface Guidelines) سفارشات کا حصہ ہے۔ iPhone X (2017) سے پہلے، پوری سکرین محفوظ تھی۔ Notch کے آنے کے ساتھ، Apple نے ان علاقوں کو متعین کیا جہاں مواد نہیں رکھا جانا چاہیے: کیمرا کٹ آؤٹ، وقت اور بیٹری اشارہ، ہوم اشارہ۔ Android نے 2018 میں نوچڈ ڈسپلے کے آنے کے ساتھ ایک متشابہ تصور نافذ کیا۔
iOS پر، SafeAreaView نیٹو لی آؤٹ گائڈ سے safeAreaInsets پڑھتا ہے۔ اوپر انسیٹ میں اسٹیٹس بار کی اونچائی شامل ہے (عام طور پڑ Notch والے iPhones کے لیے 44 یا 50 پائنٹ)۔ نیچے کا انسیٹ ہوم اشارے کے لیے 34 پائنٹ ہے۔ Android WindowInsets کا استعمال کرتا ہے — اسٹیٹس بار کے لیے اوپر انسیٹ اور سسٹم نیویگیشن کے لیے نیچے کا انسیٹ۔
| پلیٹ فارم | اوپر انسیٹ | نیچے کا انسیٹ | مخذ |
|---|---|---|---|
| iOS (Notch) | 44-50 pt | 34 pt | safeAreaInsets.top / .bottom |
| iOS (Notch کے بغیر) | 20 pt | 0 pt | safeAreaInsets.top / .bottom |
| Android (کٹ آؤٹ کے ساتھ) | 24-48 dp | 24-48 dp | WindowInsets.systemBarsInsets |
| Android (کٹ آؤٹ کے بغیر) | 24 dp | 0 dp | WindowInsets.statusBarsInsets |
اہم: SafeAreaView خودکار طور پڑ پیڈنگ لاگو کرتا ہے، لیکن صرف روٹ کنٹینر کے لیے۔ نیڈ کمپوننٹس کو تحفظ نہیں ملتا — ہر سکرین کا اپنا SafeAreaView ہونا چاہیے۔ موڈل وینڈو اور BottomSheet کے لیے، انسیٹس کو علاحدہ مد نظر رکھیں۔
Notch سکرین کے اوپر ایک ہارڈویئر کٹ آؤٹ ہے جس میں کیمرا اور سینسر ہیں۔ یہ iPhone X (2017) میں ظاہر ہوا تھا۔ Dynamic Island iPhone 14 Pro اور بعد کا ایک سافٹویئر-ہارڈویئر علاقہ ہے، جو Notch کو ایک انٹریکٹو عنصر سے بدلتا ہے۔ دونوں کو 50-56 pt کے اوپر انسیٹ کی ضرورت ہے۔
Android پر، کٹ آؤٹ مختلف اشکال میں آتے ہیں: آنسو کی شکل، پنچ ہول، کیمرے کے نیچے پٹٹی۔ Android پر SafeAreaView WindowInsets کا استعمال کرتا ہے، جو کٹ آؤٹ کی شکل کو مد نظر رکھتا ہے۔ لینڈ سکیپ اوریئٹشن میں ایپس کے لیے، سائڈ انسیٹس شامل کیے جاتے ہیں تاکہ مواد سسٹم عناصر پر چھپ ن جائ۔۔
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 مواد کی حفاظت کا سب سے آسان طریقہ ہے، لیکن ہمیشہ لچیلا نہیں ہے۔ کمپوننٹ تمام اطراف پر ایک جیسی پیڈنگ لاگو کرتا ہے، جو تب صعب ہے جب مختلف کناروں کے لیے مختلف پیڈنگ کی ضرورت ہو۔ مثال کے طور پڑ، سائڈ پیڈنگ ضروری نہیں ہو سکتی، جبکہ نیچے کی پیڈنگ صرف ایک بٹن کے لیے ضروری ہو سکتی ہے۔
اہم متبادل: react-native-safe-area-context سے useSafeAreaInsets (سب سے لچیلا حل)، Android پر StatusBar.currentHeight، دستی آلے کے ماڈل کی دستی تصدیق کے ساتھ Platform.OS۔ پچیدہ معاملات کے لیے، عام کنٹینر کے لیے SafeAreaView اور انفرادی عناصر کے لیے useSafeAreaInsets کا امتزاج استعمال کریں۔
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 لائبریری React Native میں Safe Area کے ساتھ کام کے لیے حقیقتاً معیار ہے۔ یہ Expo، React Navigation اور زیادہ تر UI کٹس کے ذریعے تعاون یافتہ ہے۔ یہ فنکشنل اور کلاس بیس دونوں نظریات کے لیے hook اور Consumer کمپوننٹ دونوں فراہم کرتا ہے۔
react-native-safe-area-context ایک لائبریری ہے جو بیلٹ-ان SafeAreaView سے زیادہ لچیلا API فراہم کرتی ہے۔ اہم فائدہ useSafeAreaInsets hook کے ذریعے انفرادی انسیٹ قیمتوں (top، bottom، left، right) تک رسائی ہے، جو انسیٹس کے انتخابی اطلاق کی اجازت دیتا ہے۔
لائبریری SafeAreaProvider بھی فراہم کرتی ہے — ایک کمپوننٹ جو ایپلیکیشن کی سب سے اوپری سطح پر لازمی ہے۔ یہ سکرین گھومانے یا کی بورڈ کھولنے پر سسٹم انسیٹ تبدیلیوں پر رکابی کرتا ہے۔ React Navigation پہلے سے طے اس لائبریری کا استعمال کرتا ہے۔
react-native-safe-area-context سے SafeAreaView بیلٹ-ان سے مختلف ہے: یہ زیادہ آلات پر کام کرتا ہے اور انسیٹ تبدیل اینیمیشن کی حمایت کرتا ہے۔ نئے مناصب کے لیے، اس لائبریری کو انحصار کے طور پڑ نصب کرنے اور بیلٹ-ان کے بجائے اس کے SafeAreaView کا استعمال کرنے کی سفارش کی جاتی ہے۔
SafeAreaView اکثر غلط استعمال ہوتا ہے۔ پہلی غلطی ہر کمپوننٹ کو SafeAreaView میں لپیٹنا ہے، جو دوگنی پیڈنگ پیدا کرتا ہے۔ قاعدہ: سکرین کے روٹ View کے لیے ایک SafeAreaView۔ نیڈ کمپوننٹس Flex لی آؤٹ کے ذریعے انسیٹس وراثت کرتے ہیں۔
دوسری غلطی Android کو نظرانداز کرنا ہے۔ Android پر، SafeAreaView WindowInsets کا استعمال کرتا ہے، جو OS ورزنوں کے درمیان مختلف ہو سکتے ہیں۔ Android 15+ پر، سسٹم بارز شفاف ہو سکتے ہیں اور انسیٹس بدل سکتے ہیں۔ ہمیشہ SafeAreaView کو حقیقی آلات پر ٹیسٹ کریں، نہ کہ صرف ایمولیٹر میں۔
تیسری غلطی سخت کوڈ شدہ پیڈنگ ہے۔ Platform.OS === 'ios' ? 44 : 24 کبھی استعمال ن کریں — انسیٹ قیمتیں ماڈل اور OS ورزنوں کے درمیان بدلتی رہتی ہیں۔ ہمیشہ سسٹم API استعمال کریں: safeAreaInsets یا useSafeAreaInsets۔ iPhone 15 Pro پر Dynamic Island کے انسیٹس iPhone X پر Notch سے مختلف ہیں۔
اکثر پوچے جانے والے سوالات
SafeAreaView iOS 11+ اور Android 5+ پر کام کرتا ہے۔ پرانے آلات پر، انسیٹس صفر ہو جائیں گے، جو غلطی کا سبب نہیں بنتا لیکن دستی اداجسٹمینٹ کی ضرورت ھو سکتی ہے۔ انتہائی مطابقت کے لیے، react-native-safe-area-context استعمال کریں۔
بیلٹ-ان SafeAreaView اطراف کے انتخاب کی اجازت نہیں دیتا۔ react-native-safe-area-context سے useSafeAreaInsets استعمال کریں: insets.top حاصل کریں اور paddingTop لاگو کریں۔ یا نیچے کے انسیٹ کی تلافی کے لیے SafeAreaView کو منفی مارجن کے ساتھ View میں لپیٹیں۔
کچھ Android آلات پر، SafeAreaView کارخانہ ترتیبات کی وجہ سے کام نہیں کر سکتا۔ یقینی بنائیں کہ React Native 0.64+ استعمال ہو رہا ہے۔ یقینی کام کے لیے، react-native-safe-area-context انسٹل کریں اور ایپ کو SafeAreaProvider میں لپیٹیں۔
جی ہاں، سکرین گھومانے پر SafeAreaView انسیٹس کا دوبارہ حساب کرتا ہے۔ Notch والے iPhones پر لینڈ سکیپ وجہ میں، سائڈ انسیٹس 0 ہو سکتے ہیں، جبکہ اوپر انسیٹ برقرار رہتا ہے۔ react-native-safe-area-context کمپوننٹ خودکار طور پڑ وجہ تبدیلیوں پر رکابی کرتا ہے۔
SafeAreaView تمام سسٹم عناصر (اسٹیٹس بار، Notch، ہوم اشارہ) سے مواد کے انسیٹس کا انتظام کرتا ہے۔ StatusBar اسٹیٹس بار کے رنگ، انداز اور نمائی کو کنٹرول کرنے کا ایک کمپوننٹ ہے۔ یہ مختلف کاموں کو حل کرتے ہیں اور ایک ساتھ استعمال کیے جا سکتے ہیں۔
خلاصہ
ہم ایک موبائل ایپلیکیشن ٹرنکی تیار کریں گے
IT Sectr 2017 سے اسٹارٹ اپس اور کاروبار کے لیے iOS اور Android ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔
مزید پڑھیں