Notch — مبانی، تطبیق رابط با برش صفحه نمایش

نویسنده: IT Sectr منتشر شده: 2026-02-28 زمان مطالعه: 10 دقیقه

Notch — برشی در بالای نمایشگر iPhone که دوربین جلو، بلندگو و حسگرهای Face ID را در خود جای می‌دهد. اولین بار در iPhone X (2017) معرفی شد، notch رویکرد طراحی رابط‌های موبایل را تغییر داد: ناحیه صفحه نمایش اطراف برش به "منطقه مرده" برای محتوا تبدیل شد. برای تطبیق رابط، Apple Safe Area — حاشیه‌هایی که تضمین می‌کند محتوا توسط notch، گوشه‌های گرد و Home Indicator پوشانده نمی‌شود — را معرفی کرد. در Android مفهوم مشابهی از طریق safeAreaInsets در iOS و displayCutout + WindowInsets در Android پیاده‌سازی می‌شود.

نکات کلیدی

  • Safe Area — ناحیه صفحه نمایش که به طور تضمینی از notch، گوشه‌های گرد و Home Indicator آزاد است
  • safeAreaInsets — ویژگی UIView در iOS که حاشیه‌های Safe Area را برای هر لبه بازمی‌گرداند
  • displayCutout — کلاس Android که برش یا گوشه‌های گرد روی صفحه را توصیف می‌کند
  • WindowInsets — سیستم Android برای دریافت حاشیه‌های زیر عناصر سیستمی (نوار وضعیت، notch)
  • طراحی تطبیقی — رابط باید در دستگاه‌های دارای notch و بدون آن به درستی نمایش داده شود

Notch چیست؟

Notch (برش، "ابرو") — ناحیه‌ای در بالای صفحه نمایش گوشی هوشمند که دوربین جلو، بلندگوی مکالمه، حسگرهای مجاورت و نور و برای iPhone X و جدیدتر — دوربین مادون قرمز Face ID، پروژکتور نقاط و نورپرداز (سیستم TrueDepth camera) در آن قرار گرفته است. Notch برای افزایش مساحت مفید صفحه نمایش با حفظ تمام حسگرهای ضروری معرفی شد — به جای قاب بالایی (bezel) نمایشگر به سمت بالا در اطراف برش گسترش می‌یابد.

ابعاد: notch استاندارد iPhone دارای عرض ~34 میلی‌متر (~209 pt در حالت عمودی برای مدل‌های 6.1 اینچی) و ارتفاع ~5 میلی‌متر (~30 pt) است. در کنار notch "گوش‌هایی" (ears) — بخش‌های کوچکی از صفحه در سمت راست و چپ برش — باقی می‌ماند. "گوش" راست معمولاً ساعت، نشانگر باتری و Wi-Fi را نشان می‌دهد؛ سمت چپ — اپراتور و وضعیت را. در حالت افقی iOS notch را با یک نوار سیاه در تمام عرض نوار وضعیت پنهان می‌کند — محتوا در ناحیه برش نمایش داده نمی‌شود.

فقط iPhone نیست: مفهوم notch توسط بسیاری از تولیدکنندگان Android اقتباس شد. Google Pixel 3 XL، OnePlus 6، Huawei P20، Xiaomi Mi 8 — همه دارای برش بودند. برخی تولیدکنندگان فراتر رفتند: برش "قطره‌ای" (waterdrop notch)، دوربین punch-hole (سوراخ در صفحه)، دوربین کشویی (ماژول بیرون‌آوردنی). پرچمداران مدرن Android (Samsung Galaxy S23+، Google Pixel 8 Pro) از punch-hole — سوراخ حداقلی برای دوربین در بالای صفحه نمایش، بدون برش عریض — استفاده می‌کنند.

Safe Area در iOS: safeAreaInsets

Safe Area — ناحیه مستطیلی داخل view که به طور تضمینی توسط عناصر رابط سیستم پوشانده نمی‌شود: notch، گوشه‌های گرد صفحه (corner radius)، Home Indicator، نوار برگه‌ها (tab bar) و نوار ناوبری (navigation bar). ابعاد Safe Area از طریق ویژگی UIView.safeAreaInsets — UIEdgeInsets با مقادیر top، left، bottom، right — بازگردانده می‌شود. برای iPhone با notch inset بالایی = ~44 pt (عمودی) یا ~0 pt (افقی با نوار سیاه).

swift
// استفاده از safeAreaInsets برای موقعیت‌دهی محتوا
class NotchAwareViewController: UIViewController {

    override func viewDidLayoutSubviews() {
        super.viewDidLayoutSubviews()

        // خواندن حاشیه‌های Safe Area
        let safeArea = self.view.safeAreaInsets

        // ثبت مقادیر برای اشکال‌زدایی
        print("inset بالایی: \(safeArea.top)")    // ~44 pt با notch
        print("inset پایینی: \(safeArea.bottom)") // ~34 pt با Home Indicator

        // موقعیت‌دهی عنوان با در نظر گرفتن 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
        )
    }

    // مدیریت تغییرات Safe Area (چرخش، Multi-Tasking)
    override func viewSafeAreaInsetsDidChange() {
        super.viewSafeAreaInsetsDidChange()
        viewDidLayoutSubviews() // محاسبه مجدد layout
    }
}

Auto Layout و Safe Area: در Interface Builder از "Safe Area" به عنوان هدف anchor به جای "Superview" استفاده کنید. برای layout برنامه‌نویسی شده از safeAreaLayoutGuide استفاده کنید: let guide = view.safeAreaLayoutGuide; titleLabel.topAnchor.constraint(equalTo: guide.topAnchor). iOS به طور خودکار safeAreaInsets را هنگام چرخش دستگاه، انتقال به Split View در iPad، نمایش/پنهان کردن صفحه کلید و تغییر جهت به‌روزرسانی می‌کند. همه کنترلرهای استاندارد UIKit (UINavigationController، UITabBarController) از قبل Safe Area را در نظر می‌گیرند. viewها و کنترلرهای سفارشی باید به صراحت از safeAreaInsets استفاده کنند.

Notch در Android: DisplayCutout و WindowInsets

DisplayCutout — کلاس Android SDK که در API 28 (Android 9.0) اضافه شده است و ناحیه برش روی صفحه را توصیف می‌کند. می‌توان آن را از طریق WindowInsets.displayCutout() دریافت کرد. این کلاس boundingBoxList — لیستی از مستطیل‌های توصیف‌کننده برش(ها) و safeInsetTop/safeInsetBottom/safeInsetLeft/safeInsetRight — حداقل حاشیه‌ها برای نمایش ایمن محتوا را بازمی‌گرداند. Android از پیکربندی‌های مختلف برش پشتیبانی می‌کند: مرکزی (مانند iPhone)، جانبی (دوربین در گوشه)، دوگانه (دو دوربین)، punch-hole.

kotlin
// تطبیق رابط با DisplayCutout در Activity
class NotchAwareActivity : AppCompatActivity() {

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

        // اجازه نمایش محتوا در ناحیه برش (در صورت نیاز)
        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)

        // دریافت DisplayCutout از طریق WindowInsets
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P && hasFocus) {
            val cutout = window.decorView.rootWindowInsets.displayCutout
            val safeTop = cutout?.safeInsetTop ?: 0

            // تنظیم حاشیه برای محتوای بالایی
            headerView.updatePadding(top = safeTop)
        }
    }
}

حالت‌های نمایش (layoutInDisplayCutoutMode): ALWAYS — محتوا می‌تواند در ناحیه برش نمایش داده شود (برای برنامه‌های تمام‌صفحه، ویدئو، بازی‌ها)؛ NEVER — محتوا هرگز برش را نمی‌پوشاند، سیستم حاشیه اضافه می‌کند؛ SHORT_EDGES — محتوا فقط در سمت کوتاه در ناحیه برش نمایش داده می‌شود (برای برنامه‌های عمودی با notch در بالا). حالت استاندارد — SHORT_EDGES (از Android 12). برای دوربین punch-hole برش کوچک‌تر است و بسیاری از برنامه‌ها برای حداکثر استفاده از صفحه از ALWAYS استفاده می‌کنند.

تکامل Notch: از iPhone X تا Dynamic Island

iPhone X (2017) — اولین گوشی هوشمند Apple با notch. برش شامل دوربین TrueDepth برای Face ID — سیستمی متشکل از دوربین مادون قرمز، پروژکتور نقاط (Dot Projector) و نورپرداز (Flood Illuminator) بود. ابعاد برش: ~34 میلی‌متر × 5 میلی‌متر. در iOS 11 Apple Safe Area را برای تطبیق برنامه‌ها معرفی کرد. کاربران به دو گروه تقسیم شدند: برخی notch را برای Face ID ضروری پذیرفتند، برخی دیگر به خاطر صفحه "بریده شده" انتقاد کردند.

iPhone 13 (2021) — Apple notch را با جابجایی بلندگو به قاب بالایی صفحه 20٪ کاهش داد. این آخرین notch کلاسیک بود. iPhone 14 و 14 Plus (2022) notch کاهش‌یافته را حفظ کردند. iPhone 14 Pro و Pro Max Dynamic Island — برش بیضی‌شکلی که دوربین و حسگرهای Face ID را ترکیب می‌کند، شکل آن را به صورت پویا تغییر می‌دهد و اعلان‌های سیستمی (تایمر، موسیقی، اتصال AirPods) را نمایش می‌دهد — معرفی کردند. Dynamic Island به یک پلتفرم نرم‌افزاری با API اختصاصی (ActivityKit، Live Activities) تبدیل شد.

نسلنوع برشویژگی‌هاSafe Area Top
iPhone X–XS (2017–2018)Notch بزرگFace ID، 34×5 میلی‌متر44 pt
iPhone XR (2018)NotchTouch ID، notch کوچک‌تر44 pt
iPhone 11 (2019)NotchFace ID، برش عریض44 pt
iPhone 12 (2020)Notchبلندگو به قاب منتقل شد44 pt
iPhone 13 (2021)Notch کاهش‌یافته20٪ کوچک‌تر44 pt
iPhone 14 / 14 Plus (2022)Notch کاهش‌یافتهبدون Face ID (14 Plus)44 pt
iPhone 14 Pro (2022)Dynamic Islandبرش تطبیقی54 pt
iPhone 15–16 (2023–2024)Dynamic IslandActivityKit، Live Activities54 pt

Dynamic Island — فقط یک برش نیست، بلکه یک عنصر رابط تعاملی است. هنگام اتصال AirPods، جزیره گسترش یافته و آیکون و وضعیت را نشان می‌دهد. درخواست تاکسی (Uber) زمان رسیدن را نمایش می‌دهد. تایمر هنگام کوچک‌سازی برنامه در جزیره قابل مشاهده است. Dynamic Island در iPhone 14 Pro/Pro Max، iPhone 15/15 Pro/15 Pro Max، iPhone 16/16 Pro/16 Pro Max در دسترس است. Safe Area برای Dynamic Island: inset بالایی = 54 pt (10 pt بیشتر از notch کلاسیک).

قوانین طراحی برای رابط‌های دارای برش

هرگز محتوا را پشت notch پنهان نکنید — برای محاسبه خودکار حاشیه‌ها از Safe Area یا DisplayCutout استفاده کنید. مقادیر ثابت حاشیه (مثلاً 44 pt) را تنظیم نکنید — آنها در دستگاه‌ها و جهت‌های مختلف متفاوت هستند. همیشه از APIهای سیستم برای خواندن Safe Area استفاده کنید: safeAreaInsets در iOS، windowInsets.displayCutout در Android. این امر نمایش صحیح را در همه دستگاه‌ها تضمین می‌کند: iPhone SE (بدون notch)، iPhone 14 Pro (notch)، iPhone 15 (Dynamic Island)، iPad (بدون notch، اما با Home Indicator).

جهت افقی — منطقه خطر ویژه. در iPhone با notch در حالت افقی، iOS به طور خودکار یک نوار سیاه در تمام عرض نوار وضعیت اضافه می‌کند (محتوا در سمت چپ و راست notch نمایش داده نمی‌شود). این کار توسط سیستم با Safe Area inset = 0 top اما left/right insets افزایش یافته (~47 pt) انجام می‌شود. سعی نکنید این رفتار را غیرفعال کنید — App Store برنامه‌ای را که از مناطق "ممنوعه" صفحه برای محتوا در حالت افقی استفاده می‌کند رد خواهد کرد. برای ویدئوی تمام‌صفحه از AVPlayerViewController استفاده کنید که به طور خودکار کنترل‌ها را خارج از ناحیه notch قرار می‌دهد.

قانونiOSAndroid
API برای حاشیه‌هاsafeAreaInsets / safeAreaLayoutGuideWindowInsets.displayCutout.safeInsetTop
تطبیق با چرخشviewSafeAreaInsetsDidChangeonWindowFocusChanged
حالت تمام‌صفحهprefersStatusBarHidden = trueSYSTEM_UI_FLAG_FULLSCREEN
محتوای نوار وضعیتبه طور خودکار در "گوش‌های" نزدیک notchاز طریق layoutInDisplayCutoutMode
جهت افقینوار سیاه (به طور خودکار)حاشیه‌ها از WindowInsets
ویدئو/بازی‌هاAVPlayerViewController (ایمن)LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS

پس‌زمینه و نوار وضعیت: اگر از رنگ پس‌زمینه سفارشی استفاده می‌کنید، باید تمام ناحیه صفحه از جمله ناحیه پشت notch را پر کند. محتوا را روی نوار وضعیت رسم نکنید — از Safe Area استفاده کنید. برای حالت تاریک مطمئن شوید نوار وضعیت خوانا است: preferredStatusBarStyle را مطابق با سبک پس‌زمینه خود تنظیم کنید (.default برای متن تیره روی پس‌زمینه روشن، .lightContent برای متن روشن روی پس‌زمینه تیره).

تست تطبیق با Notch

شبیه‌سازها و شبیه‌سازهای مجازی: Xcode شبیه‌سازهای همه مدل‌های iPhone با notch (iPhone X–14) و Dynamic Island (iPhone 14 Pro–15) را فراهم می‌کند. Android Studio شبیه‌سازهایی با پیکربندی‌های مختلف برش (Google Pixel 3 XL، شبیه‌ساز سفارشی با cutout) را فراهم می‌کند. در حالت عمودی و افقی، با صفحه کلید و بدون آن، در Split View (iPad) تست کنید. بررسی کنید که همه محتوا خوانا و پوشانده نشده باشد.

دستگاه‌های واقعی: notch در شبیه‌ساز و دستگاه واقعی ممکن است متفاوت باشد. به عنوان مثال، شبیه‌ساز iPhone 14 Pro Dynamic Island را نشان می‌دهد، اما بدون تعامل واقعی (Live Activities). در Android، دوربین punch-hole ممکن است دقیقاً شبیه‌سازی نشود. بهترین روش تست بر روی دستگاه‌های واقعی است. حداقل مجموعه: iPhone SE (بدون notch)، iPhone 14 (notch)، iPhone 15 Pro (Dynamic Island)، Android با punch-hole، Android با صفحه لبه‌دار (Samsung Edge).

ابزارها: برای iOS از Xcode View Debugger با گزینه "Show Safe Area Insets" استفاده کنید — مرزهای Safe Area را به صورت بصری نشان می‌دهد. برای Android — Layout Inspector در Android Studio که WindowInsets و DisplayCutout را در پنل Attributes نمایش می‌دهد. همچنین Accessibility Inspector برای بررسی اینکه همه عناصر داخل Safe Area برای VoiceOver/TalkBack قابل دسترسی هستند مفید است. iPad بدون notch اما با Home Indicator (حاشیه پایینی ~21 pt) و گوشه‌های گرد را فراموش نکنید.

سوالات متداول

اندازه safeAreaInsets برای iPhone با notch چقدر است؟

برای iPhone با notch (X–14) در حالت عمودی: top = 44 pt، left = 0، right = 0، bottom = 34 pt (Home Indicator). برای iPhone با Dynamic Island (14 Pro–16): top = 54 pt، bottom = 34 pt. برای iPhone SE (بدون notch): top = 20 pt (نوار وضعیت)، bottom = 0 pt (اگر Home Indicator نباشد) یا 21 pt (برای مدل‌های با Home Indicator). در حالت افقی top = 0، left = 47 pt، right = 47 pt، bottom = 21 pt.

تفاوت بین Notch و Dynamic Island چیست؟

Notch — برش ثابت برای دوربین و حسگرهای Face ID. Dynamic Island — عنصر نرم‌افزاری-سخت‌افزاری که شکل خود را تغییر می‌دهد و اعلان‌ها، تایمرها، Live Activities را نمایش می‌دهد. Dynamic Island در iPhone 14 Pro و جدیدتر در دسترس است. Safe Area برای Dynamic Island بزرگ‌تر است (top = 54 pt در مقابل 44 pt برای notch). Dynamic Island از API ActivityKit برای توسعه‌دهندگان شخص ثالث پشتیبانی می‌کند.

چگونه حاشیه زیر برش را در Android دریافت کنیم؟

در Android حاشیه زیر DisplayCutout از طریق WindowInsets دریافت می‌شود. فراخوانی: decorView.rootWindowInsets.displayCutout?.safeInsetTop. برای API 28+ (Android 9). حالت نمایش از طریق window.attributes.layoutInDisplayCutoutMode مدیریت می‌شود: NEVER (حاشیه)، SHORT_EDGES (حاشیه در سمت کوتاه)، ALWAYS (بدون حاشیه). برای دوربین punch-hole safeInsetTop برابر با ارتفاع نوار وضعیت (~24 dp) است.

چرا iPhone با Notch در حالت افقی نوارهای سیاه نشان می‌دهد؟

در حالت افقی iOS به طور خودکار نوارهای سیاه را در کناره‌های صفحه اضافه می‌کند تا محتوا در ناحیه برش نمایش داده نشود. این یک رفتار سیستمی است که توسط Safe Area insets (left/right ~47 pt) تنظیم می‌شود. دلیل: در حالت افقی "گوش‌های" کنار notch برای نمایش محتوای مفید بسیار کوچک هستند. برای برنامه‌های تمام‌صفحه (ویدئو، بازی‌ها) می‌توان از AVPlayerViewController با مدیریت خودکار پخش‌کننده استفاده کرد.

آیا پشتیبانی از Safe Area در برنامه الزامی است؟

بله، استفاده از Safe Area الزامی است برای همه برنامه‌هایی که در App Store منتشر می‌شوند. Apple این را در بازبینی بررسی می‌کند: اگر محتوا توسط notch، گوشه‌های گرد یا Home Indicator پوشانده شود، برنامه رد می‌شود. در Android توصیه: از WindowInsets برای تطبیق با برش استفاده کنید. از Android 12، حالت SHORT_EDGES استاندارد است و سیستم به طور خودکار برای برنامه‌هایی که از layoutهای سفارشی استفاده نمی‌کنند حاشیه‌های زیر برش را اضافه می‌کند.

خلاصه

  • Notch — برش در بالای صفحه برای دوربین و حسگرها، در iPhone X (2017) ظاهر شد
  • Safe Area — ناحیه صفحه عاری از عناصر رابط سیستم
  • iOS API — safeAreaInsets و safeAreaLayoutGuide برای موقعیت‌دهی محتوا
  • Android API — DisplayCutout و WindowInsets برای دریافت حاشیه‌های زیر برش
  • Dynamic Island — تکامل notch در iPhone 14 Pro+، عنصر تعاملی با ActivityKit
  • جهت افقی — در حالت افقی iOS نوارهای سیاه برای notch اضافه می‌کند
  • تست — بررسی اجباری روی دستگاه‌ها با انواع مختلف برش

ما یک اپلیکیشن موبایل به صورت کلید در دست توسعه خواهیم داد

IT Sectr از سال 2017 برنامه‌های iOS و Android را برای استارتاپ‌ها و کسب‌وکارها ایجاد می‌کند. ما به شما مشاوره می‌دهیم و بهترین راه‌حل را پیشنهاد خواهیم کرد.

بحث درباره پروژه

همچنین بخوانید