Safe Area — यह क्या है, notch और StatusBar से मार्जिन

लेखक: IT Sectr प्रकाशित: 2026-02-25 पढ़ने का समय: 8 मिनट

हम दिखाते हैं कि Safe Area क्या है — स्क्रीन का सुरक्षित क्षेत्र जो गारंटी देता है कि सामग्री सिस्टम तत्वों: notch, Dynamic Island, StatusBar, Home इंडिकेटर और गोल कोनों द्वारा ओवरलैप नहीं की जाती है। Safe Area iOS और Android में अनुकूली लेआउट का एक अनिवार्य तत्व है, जिसके बिना इंटरफ़ेस कटआउट वाले उपकरणों पर गलत दिखाई दे सकता है। Apple HIG (2025) के अनुसार, 2017 में iPhone X की शुरुआत के बाद से, सभी एप्लिकेशन को Safe Area Layout Guide का उपयोग करना चाहिए।

मुख्य बातें

  • Safe Area — स्क्रीन का वह क्षेत्र जो सिस्टम तत्वों: notch, StatusBar, Home Indicator, गोल कोनों से मुक्त है।
  • iOS में, Safe Area को SafeAreaLayoutGuide और SwiftUI में .safeAreaInset() मॉडिफ़ायर के माध्यम से कार्यान्वित किया जाता है।
  • Android में, Safe Area को WindowInsets और पुराने संस्करणों के समर्थन के लिए WindowInsetsCompat के माध्यम से कार्यान्वित किया जाता है।
  • iPhone 14 Pro और नए पर Dynamic Island notch को बदलता है और Safe Area में भी इसे ध्यान में रखा जाता है।
  • Google Android Docs (2025) के अनुसार, Safe Area को अनदेखा करना Google Play और App Store पर एप्लिकेशन अस्वीकृति के तीन मुख्य कारणों में से एक है।

Safe Area क्या है?

Safe Area स्क्रीन का एक आयताकार क्षेत्र है जहाँ सामग्री हार्डवेयर और सॉफ़्टवेयर सिस्टम तत्वों: कैमरा कटआउट (notch), Dynamic Island, स्टेटस बार (StatusBar), जेस्चर नेविगेशन इंडिकेटर (Home Indicator), गोल डिस्प्ले कोनों और नेविगेशन बार द्वारा ओवरलैप न होने की गारंटी है। Safe Area की सीमाएँ डिवाइस घुमाने, कीबोर्ड खोलने या Split View शुरू करने पर गतिशील रूप से बदलती हैं। Apple Human Interface Guidelines (2025) के अनुसार, Safe Area को अनदेखा करना डिज़ाइन दोष माना जाता है और समीक्षा के दौरान एप्लिकेशन अस्वीकृति का कारण बन सकता है।

Safe Area की आवश्यकता क्यों है

Safe Area मोबाइल इकोसिस्टम में स्क्रीन विखंडन की समस्या को हल करता है। iPhone X से पहले, सभी iPhone में समान अनुपात के साथ आयताकार डिस्प्ले था। notch के आगमन के साथ, स्क्रीन वेरिएंट की संख्या 20+ हो गई — विभिन्न notch आकार, Dynamic Island, गोल कोने, इंडिकेटर। Safe Area डेवलपर को इन अंतरों से अलग करता है, अनुकूली मार्जिन के लिए एक एकीकृत API प्रदान करता है। Apple Developer (2025) के अनुसार, iOS रूट व्यू पर स्वचालित रूप से Safe Area लागू करता है, लेकिन UICollectionView और UIScrollView के लिए मैन्युअल कॉन्फ़िगरेशन की आवश्यकता होती है।

डिवाइसकटआउट प्रकारऊपरी मार्जिननिचला मार्जिनStatusBar
iPhone SE (3rd gen)कोई नहीं20px0pxहाँ
iPhone 13 ProNotch47px34pxNotch के अंदर
iPhone 14 ProDynamic Island59px34pxDI के अंदर
iPhone 16 ProDynamic Island59px34pxDI के अंदर
Android Pixel 8Punch-hole (कैमरा)24px24pxस्टेटस बार

iOS में Safe Area: SafeAreaLayoutGuide और SwiftUI

iOS में, Safe Area को UIKit में SafeAreaLayoutGuide और SwiftUI में safeAreaInset मॉडिफ़ायर के माध्यम से कार्यान्वित किया जाता है। SafeAreaLayoutGuide एक लेआउट गाइड है जो प्रत्येक UIView में जोड़ा जाता है और सिस्टम तत्वों से मुक्त आयत को परिभाषित करता है। Interface Builder में, Safe Area नीले क्षेत्र के रूप में दिखाई देता है। SwiftUI अधिकांश कंटेनरों के लिए स्वचालित रूप से Safe Area लागू करता है लेकिन .ignoresSafeArea() के माध्यम से इसे अनदेखा करने की अनुमति देता है।

Swift
// UIKit: SafeAreaLayoutGuide
let safeGuide = view.safeAreaLayoutGuide
button.translatesAutoresizingMaskIntoConstraints = false
NSLayoutConstraint.activate([
    button.topAnchor.constraint(
        equalTo: safeGuide.topAnchor),
    button.leadingAnchor.constraint(
        equalTo: safeGuide.leadingAnchor),
    button.trailingAnchor.constraint(
        equalTo: safeGuide.trailingAnchor),
])

UIKit में SafeAreaLayoutGuide चार एंकर — शीर्ष, निचला, आरंभिक, अंतिम — परिभाषित करता है जो स्वचालित रूप से notch, StatusBar और Home Indicator को ध्यान में रखते हैं। यह दृष्टिकोण iOS 11 से सभी iOS उपकरणों पर काम करता है। SwiftUI में, वही प्रभाव NavigationStack या VStack के अंदर कंटेंट मॉडिफ़ायर के माध्यम से प्राप्त किया जाता है — SwiftUI स्वचालित रूप से Safe Area Insets लागू करता है।

Swift
// SwiftUI: safeAreaInset और ignoresSafeArea
ZStack {
    Color.blue
        .ignoresSafeArea()
    VStack {
        Text("Safe Area में सामग्री")
            .foregroundColor(.white)
        Spacer()
    }
}
.safeAreaInset(edge: .bottom) {
    Text("स्क्रीन के नीचे बार")
        .padding()
        .background(.thinMaterial)
}

SwiftUI में, .ignoresSafeArea() बैकग्राउंड को Safe Area से परे विस्तारित करने की अनुमति देता है, जबकि .safeAreaInset(edge:) एक कस्टम पैनल जोड़ता है जो निर्दिष्ट पक्ष पर Safe Area को कम करता है। यह नेविगेशन बार, टूलबार और विज्ञापन बैनर के लिए एक मानक पैटर्न है।

Android में Safe Area: WindowInsets और System Bars

Android में, Safe Area को WindowInsets (API 30+) और WindowInsetsCompat (AndroidX लाइब्रेरी) के माध्यम से कार्यान्वित किया जाता है। WindowInsets Status Bar, Navigation Bar, IME (कीबोर्ड) और सिस्टम जेस्चर के लिए मार्जिन प्रदान करता है। Android 10 (API 29) से शुरू करके, Google सभी सिस्टम तत्वों के लिए एकीकृत मार्जिन सेट प्राप्त करने के लिए WindowInsetsCompat.getInsets() का उपयोग WindowInsetsCompat.Type.systemBars() के साथ करने की सलाह देता है।

Kotlin
// Android: WindowInsets (Kotlin)
class MainActivity : AppCompatActivity() {
    override fun onCreate(
        savedInstanceState: Bundle?
    ) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        ViewCompat.setOnApplyWindowInsetsListener(
            findViewById(R.id.main_content)
        ) { view, insets ->
            val systemBars = insets.getInsets(
                WindowInsetsCompat.Type.systemBars()
            )
            view.setPadding(
                systemBars.left,
                systemBars.top,
                systemBars.right,
                systemBars.bottom
            )
            ViewCompat.ON_APPLY_WINDOW_INSETS_LISTENER
        }
    }
}

इस उदाहरण में, WindowInsets सभी सिस्टम बार के लिए मार्जिन लौटाता है — ऊपर Status Bar, नीचे Navigation Bar। setOnApplyWindowInsetsListener हर बार मार्जिन बदलने पर कॉल किया जाता है (घुमाव, कीबोर्ड आह्वान)। systemBars() विधि स्टेटस बार, नेविगेशन बार और कस्टमाइज़ेशन बार को एक सेट में जोड़ती है, जिससे कोड सरल हो जाता है।

Android में Edge-to-Edge

Android 15 से शुरू करके, Google को नई API को लक्षित करने वाले सभी एप्लिकेशन के लिए edge-to-edge डिस्प्ले की आवश्यकता है। इसका मतलब है कि एप्लिकेशन सिस्टम बार के नीचे खींचता है, और Safe Area को handleWindowInsets या WindowInsetController के माध्यम से लागू किया जाता है। Android Developer Blog (2025) के अनुसार, 68% एप्लिकेशन पहले ही edge-to-edge पर स्विच कर चुके हैं, जो बड़ी स्क्रीन वाले उपकरणों पर दृश्य धारणा में सुधार करता है।

Safe Area, Padding और Insets: क्या अंतर है

Safe Area, Padding और Insets संबंधित लेकिन अलग अवधारणाएँ हैं। Safe Area स्क्रीन का वह क्षेत्र है जो सिस्टम तत्वों से मुक्त होने की गारंटी है। Padding किसी तत्व का उसकी सीमाओं से आंतरिक मार्जिन है। Insets विशिष्ट संख्यात्मक ऑफ़सेट मान हैं जो Safe Area API द्वारा लौटाए जाते हैं। Apple Tech Notes (2025) के अनुसार, Safe Area और Padding के बीच भ्रम ऐप स्टोर में 40% अनुकूलनशीलता समस्याओं का कारण है।

अवधारणापरिभाषाप्लेटफ़ॉर्मपरिवर्तनशीलता
Safe Areaसिस्टम तत्वों के बिना क्षेत्रiOS, Androidगतिशील
Paddingव्यू के अंदर आंतरिक मार्जिनसभी प्लेटफ़ॉर्मस्थिर
Layout Marginsलेआउट किनारों से मार्जिनiOS (UIKit)स्थिर/गतिशील
WindowInsetsAndroid में सिस्टम मार्जिनAndroidगतिशील

कोड के साथ Safe Area कार्यान्वयन के उदाहरण

आइए विशिष्ट परिदृश्यों पर विचार करें: notch के साथ लैंडस्केप ओरिएंटेशन के लिए UIKit में Safe Area, कस्टम पैनल के साथ SwiftUI में Safe Area, Android Compose में Safe Area। iOS UIKit के लिए उदाहरण — Dynamic Island वाले iPhone पर Safe Area के अंदर कलेक्शन रखना। Jetpack Compose के लिए उदाहरण — Material 3 में WindowInsets का उपयोग।

Kotlin
// Jetpack Compose: Safe Area मार्जिन
@OptIn(ExperimentalMaterial3Api::class)
fun SafeAreaScreen() {
    val systemBars = with(
        LocalDensity.current
    ) {
        val insets = WindowInsets
            .systemBars
            .getAsPaddingValues()
        PaddingValues(
            top = insets.calculateTopPadding(),
            bottom = insets.calculateBottomPadding()
        )
    }
    Scaffold(
        contentWindowInsets = WindowInsets(
            top = systemBars.computeTopPadding(),
            bottom = systemBars.computeBottomPadding()
        )
    ) { innerPadding ->
        Column(
            modifier = Modifier
                .padding(innerPadding)
        ) {
            Text("Safe Area में सामग्री")
        }
    }
}

Jetpack Compose में, Scaffold contentWindowInsets पैरामीटर के माध्यम से स्वचालित रूप से WindowInsets को ध्यान में रखता है। InnerPadding को content में पास किया जाता है और आंतरिक तत्वों पर लागू किया जाता है। padding(innerPadding) मॉडिफ़ायर वाला Column गारंटी देता है कि टेक्स्ट सिस्टम बार के नीचे नहीं जाएगा।

Safe Area के साथ काम करते समय सामान्य गलतियाँ

Apple (2025) द्वारा App Store Review विश्लेषण के अनुसार, पाँच सबसे सामान्य गलतियाँ हैं: लैंडस्केप ओरिएंटेशन में Safe Area को अनदेखा करना, SafeAreaLayoutGuide के बजाय हार्डकोडेड मार्जिन का उपयोग करना, UIScrollView में Safe Area की गलत हैंडलिंग, मोडल प्रेजेंटेशन में भूला हुआ मार्जिन और Dynamic Island के लिए अनुकूलन की कमी। हार्डकोडेड मार्जिन (ऊपर 20px हार्डकोडेड) सबसे आम गलती है: iPhone 14 Pro पर, वे 20px 59px हो जाते हैं, और सामग्री कट जाती है।

  • लैंडस्केप को अनदेखा करना — लैंडस्केप ओरिएंटेशन में, Safe Area के अलग मार्जिन होते हैं: Home Indicator दाईं ओर शिफ्ट हो जाता है, और ऊपरी मार्जिन कम हो जाता है।
  • हार्डकोडेड मार्जिन — 20px या 44px के मान केवल बिना notch वाले पुराने iPhone पर काम करते हैं। आधुनिक उपकरणों पर, मार्जिन 2-3 गुना भिन्न होते हैं।
  • ScrollView और Safe Area — UIScrollView में contentInsetAdjustmentBehavior को .always पर सेट किया जाना चाहिए, अन्यथा सामग्री सिस्टम बार के नीचे छिपी रहेगी।

अक्सर पूछे जाने वाले प्रश्न

SwiftUI में Safe Area मार्जिन कैसे प्राप्त करें?

SwiftUI में, Safe Area अधिकांश कंटेनरों पर स्वचालित रूप से लागू होता है। मार्जिन पढ़ने के लिए, EnvironmentValues का उपयोग करें: @Environment(\.safeAreaInsets) var safeAreaInsets। कस्टम पैनल के लिए, .safeAreaInset(edge:content:) का उपयोग करें। उन बैकग्राउंड के लिए जो सिस्टम तत्वों के नीचे फैलने चाहिए, .ignoresSafeArea() लागू करें।

Android में edge-to-edge क्या है?

Edge-to-edge एक डिस्प्ले मोड है जहाँ एप्लिकेशन सिस्टम बार (Status Bar, Navigation Bar) के नीचे खींचता है, और Safe Area WindowInsets के माध्यम से लागू किया जाता है। Android 15 से शुरू करके, Google को targetSdk 35 वाले सभी एप्लिकेशन के लिए edge-to-edge की आवश्यकता है। इसे Jetpack Compose में WindowInsetsCompat या handleWindowInsets के माध्यम से कार्यान्वित किया जाता है।

क्या मुझे WebView के लिए Safe Area संभालने की आवश्यकता है?

हाँ, WebView को भी Safe Area को ध्यान में रखना चाहिए। iOS में, webView.scrollView.contentInsetAdjustmentBehavior = .always का उपयोग करें। Android में, XML में android:fitsSystemWindows="true" जोड़ें या ViewCompat.setOnApplyWindowInsetsListener के माध्यम से प्रोग्रामेटिक padding करें। CSS वातावरण (env(safe-area-inset-top)) Safari में काम करता है लेकिन Android सिस्टम WebViews में नहीं।

सारांश

  • Safe Area — स्क्रीन का वह क्षेत्र जो notch, Dynamic Island, StatusBar और Home Indicator से मुक्त है।
  • iOS: UIKit में SafeAreaLayoutGuide और SwiftUI में .safeAreaInset के माध्यम से कार्यान्वित।
  • Android: WindowInsets (API 30+) या WindowInsetsCompat (AndroidX) के माध्यम से कार्यान्वित।
  • iPhone 14 Pro और नए पर Dynamic Island Safe Area के ऊपरी मार्जिन को 59px तक बढ़ाता है।
  • Safe Area को अनदेखा करना App Store और Google Play पर एप्लिकेशन अस्वीकृति के मुख्य कारणों में से एक है।
  • हार्डकोडेड मार्जिन स्वीकार्य नहीं हैं — हमेशा Safe Area के प्रोग्रामेटिक APIs का उपयोग करें।

हम एक मोबाइल एप्लिकेशन टर्नकी विकसित करेंगे

IT Sectr 2017 से स्टार्टअप और व्यवसायों के लिए iOS और Android एप्लिकेशन बनाता है। हम आपको सलाह देंगे और सर्वोत्तम समाधान प्रस्तावित करेंगे।

परियोजना पर चर्चा करें

यह भी पढ़ें