الوضع الداكن (السمة الداكنة) — نظام ألوان حيث تصبح خلفية الشاشة داكنة (رمادي داكن أو أسود)، بينما يصبح النص والعناصر فاتحة. يقلل الوضع الداكن من إجهاد العين في الإضاءة المنخفضة، ويوفر طاقة البطارية على شاشات OLED (حتى 60% وفقًا لبيانات Google، 2019)، ويلبي متطلبات إمكانية الوصول للمستخدمين الذين يعانون من رهاب الضوء. في iOS 13 وAndroid 10، أصبح الوضع الداكن خيارًا نظاميًا — يقوم المستخدم بتشغيل السمة الداكنة عالميًا، ويتبناها التطبيق تلقائيًا. لمزيد من التفاصيل، راجع الوثائق الرسمية لنظام Android حول السمة الداكنة.
أهم النقاط
الوضع الداكن — هو نظام ألوان حيث تكون خلفية الشاشة داكنة (عادةً #121212 في Android، #1C1C1E في iOS)، بينما يكون النص وعناصر الواجهة فاتحة. على عكس عكس الألوان البسيط، يستخدم الوضع الداكن عالي الجودة لوحة مختارة بعناية: خلفية رمادية داكنة بدلاً من الأسود الخالص (يقلل من تأثير الهالة)، وتشبع منخفض للألوان المميزة، وظلال ناعمة. ظهر دعم النظام للوضع الداكن في iOS 13 (سبتمبر 2019) وAndroid 10 (سبتمبر 2019).
السبب الرئيسي للاعتماد — راحة المستخدم. في الإضاءة المنخفضة (في المساء، في الظلام)، تسبب الشاشة البيضاء الساطعة إجهاد العين وقد تؤدي إلى الصداع. يقلل الوضع الداكن من سطوع الشاشة دون التضحية بإمكانية القراءة. بالنسبة للمستخدمين الذين يعانون من رهاب الضوء أو حساسية الضوء، فإن السمة الداكنة ليست خيارًا بل هي الطريقة الوحيدة لاستخدام التطبيق بشكل مريح. وفقًا لـ Android Developers، أكثر من 30% من مستخدمي Android يبقون السمة الداكنة مفعلة طوال الوقت.
الوضع الداكن يوفر طاقة البطارية على شاشات OLED. على عكس LCD، حيث تكون الإضاءة الخلفية دائمًا قيد التشغيل، تضيء بكسلات OLED نفسها بنفسها. اللون الداكن يعني أن البكسل متوقف — ينخفض استهلاك الطاقة. وفقًا لـ Google (مدونة Android Developers، 2019)، على Pixel بشاشة OLED، يقلل الوضع الداكن عند سطوع 100% من استهلاك الطاقة بنسبة 60% مقارنة بالسمة الفاتحة. على شاشات LCD، يكون التوفير ضئيلًا (حوالي 3-5%) لأن الإضاءة الخلفية للمصفوفة تعمل بغض النظر عن لون البكسل.
دعم النظام للوضع الداكن مر بعدة مراحل. iOS 13 (2019) قدم سمة داكنة عالمية عبر UIUserInterfaceStyle. Android 10 (2019) أضاف Force Dark Mode للتطبيقات التي ليس لديها سمة داكنة خاصة بها. Android 12 (2021) مع Material You بدأ بتوليد لوحة داكنة تلقائيًا من الخلفيات. iOS 15 (2021) وسع API لمتصفح Safari والمحتوى على الويب. وفقًا لـ StatCounter (2026)، 82% من أفضل 100 تطبيق في App Store وGoogle Play تدعم الوضع الداكن.
| المنصة | الإصدار | السنة | الابتكار الرئيسي |
|---|---|---|---|
| iOS | 13 | 2019 | UIUserInterfaceStyle، traitCollection.userInterfaceStyle |
| Android | 10 (Q) | 2019 | Force Dark Mode، سمة DayNight لـ AppCompat |
| iOS | 15 | 2021 | السمة الداكنة للمحتوى على الويب وSafari |
| Android | 12 | 2021 | Material You Dynamic Themes مع توليد تلقائي للوحة داكنة |
API الوضع الداكن في iOS يعتمد على بروتوكول UITraitEnvironment. لكل UIViewController وUIView خاصية traitCollection.userInterfaceStyle، والتي يمكن أن تكون .unspecified أو .light أو .dark. عند تغيير سمة النظام، يستدعي iOS طريقة traitCollectionDidChange(_:). يجب على المطور تحديث الألوان في هذه الطريقة، أو استخدام الألوان الديناميكية (UIColor(dynamicProvider:)) التي تتبدل تلقائيًا بين اللوحة الفاتحة والداكنة.
class ViewController: UIViewController {
@IBOutlet var titleLabel: UILabel!
override func traitCollectionDidChange(_: UITraitCollection?) {
super.traitCollectionDidChange(previousTraitCollection)
if traitCollection.hasDifferentColorAppearance(comparedTo: previousTraitCollection) {
updateColors()
}
}
func updateColors() {
let isDark = traitCollection.userInterfaceStyle == .dark
view.backgroundColor = isDark ? UIColor(named: "darkBackground") : .systemBackground
titleLabel.textColor = isDark ? .white : .darkText
}
}
// تفعيل إجباري للوضع الداكن
window.overrideUserInterfaceStyle = .dark
الألوان الديناميكية — أفضل طريقة لتنفيذ الوضع الداكن في iOS. يقوم UIColor(named:) تلقائيًا بتحميل قيم مختلفة من Asset Catalog للمظهرين .light و .dark. ما عليك سوى تعريف لون في Assets.xcassets بنسختين (Any Appearance + Dark Appearance)، وسيختار UIKit اللون المناسب تلقائيًا. الألوان الديناميكية للنظام (UIColor.systemBackground، .label، .secondaryLabel) تدعم الوضع الداكن بالفعل وتتغير تلقائيًا.
SwiftUI يدعم الوضع الداكن بشكل مدمج. جميع الألوان والمعدلات القياسية (Color.primary، .background، Color(UIColor.systemBackground)) تتكيف تلقائيًا. للألوان المخصصة، استخدم Color(uiColor:) مع UIColor ديناميكي أو متغير البيئة @Environment(\.colorScheme) للتحقق الصريح من السمة. يتم إعادة رسم SwiftUI View تلقائيًا عند تغيير السمة، دون الحاجة لاستدعاء traitCollectionDidChange.
struct ThemeView: View {
@Environment(\.colorScheme) var colorScheme
var body: some View {
Text("الوضع الداكن")
.foregroundColor(colorScheme == .dark ? .white : .black)
.background(colorScheme == .dark ? Color(.systemGray6) : .white)
}
}
الوضع الداكن في Android يتم تنفيذه من خلال مكتبة AppCompat وسمة Theme.AppCompat.DayNight. خلال النهار تُستخدم السمة الفاتحة، وفي الليل — السمة الداكنة. يتم التفعيل الإجباري عبر AppCompatDelegate.setDefaultNightMode(): MODE_NIGHT_YES (داكن)، MODE_NIGHT_NO (فاتح)، MODE_NIGHT_FOLLOW_SYSTEM (النظام). يتم تقسيم الموارد إلى فاتحة (res/values/styles.xml) وداكنة (res/values-night/styles.xml).
// تفعيل إجباري للسمة الداكنة
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
// تعيين قبل super.onCreate
AppCompatDelegate.setDefaultNightMode(
AppCompatDelegate.MODE_NIGHT_YES
)
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
}
// تحديد السمة الحالية
private val isDarkMode: Boolean
get() = (resources.configuration.uiMode and
Configuration.UI_MODE_NIGHT_MASK) ==
Configuration.UI_MODE_NIGHT_YES
}
// تسجيل الوضع الليلي في AndroidManifest.xml
// android:configChanges="uiMode"
Force Dark Mode — ميزة نظام في Android 10+ تعكس ألوان التطبيقات التي لا تدعم السمة الداكنة تلقائيًا. يتم تفعيلها من خلال خيارات المطور أو عبر السمة android:forceDarkAllowed="true". هذا حل مؤقت: للإنتاج، يجب تنفيذ لوحة داكنة خاصة بك من خلال values-night، وإلا ستكون الجودة البصرية منخفضة (أيقونات مقلوبة، ألوان صعبة القراءة).
Material You (Android 12+) يولد تلقائيًا 5 ألوان رئيسية من خلفية الجهاز: primary، secondary، tertiary، neutral، neutralVariant. لكل لون، يتم إنشاء لوحات فاتحة وداكنة. يستخدم المطور السمات: ?attr/colorPrimary، ?attr/colorOnPrimary، ?attr/colorSurface. يختار النظام نفسه النوع المناسب للسمة الحالية. Dynamic Color مدعوم على Android 12+ مع Material Design 3 (مكون com.google.android.material:material).
// values/themes.xml — السمة الفاتحة
<style name="Theme.MyApp" parent="Theme.Material3.DayNight">
<item name="colorPrimary">@color/primary_light</item>
<item name="colorOnPrimary">@color/on_primary_light</item>
</style>
// values-night/themes.xml — السمة الداكنة
<style name="Theme.MyApp" parent="Theme.Material3.DayNight">
<item name="colorPrimary">@color/primary_dark</item>
<item name="colorOnPrimary">@color/on_primary_dark</item>
</style>
تصميم الوضع الداكن — ليس مجرد عكس الألوان. يوصي Google Material Design باستخدام الرمادي الداكن (#121212) بدلاً من الأسود الخالص. الأسود الخالص (#000000) يخلق تباينًا عاليًا جدًا مع النص الأبيض، مما يسبب تأثير الهالة (توهج حول الحروف). يتم التعبير عن مستوى ارتفاع العناصر من خلال اللون: كلما ارتفع العنصر، كلما كانت خلفيته أفتح. بطاقة فوق الخلفية — #1E1E1E، حوار — #2D2D2D، لوحة التنقل — #383838.
تباين الألوان في الوضع الداكن يجب أن يكون أقل منه في الوضع الفاتح. يوصي Material Design: النص الأساسي — أبيض (#FFFFFF) بنسبة عتامة 87%، الثانوي — 60%، المعطل — 38%. يجب أن تكون الألوان المميزة أقل تشبعًا: إذا كان primary في السمة الفاتحة = #6200EE، ففي السمة الداكنة — #BB86FC (أرجواني فاتح هادئ). وفقًا لـ WCAG 2.1، يجب الحفاظ على تباين لا يقل عن 4.5:1 للنص العادي في كلتا السمتين.
| العنصر | الوضع الفاتح | الوضع الداكن | التباين |
|---|---|---|---|
| خلفية الشاشة | #FFFFFF | #121212 | — |
| بطاقة | #F5F5F5 | #1E1E1E | ارتفاع 1dp |
| النص الأساسي | #000000 87% | #FFFFFF 87% | 15.8:1 |
| النص الثانوي | #000000 60% | #FFFFFF 60% | 9.0:1 |
| اللون الأساسي | #6200EE | #BB86FC | 7.2:1 |
الصور والأيقونات تتطلب معالجة منفصلة في السمة الداكنة. يجب إعادة تلوين الأيقونات ذات الشفافية بألوان فاتحة. قد تكون الصور الفوتوغرافية ذات الخلفيات الساطعة مبهرة — يُوصى بتقليل السطوع بنسبة 20-30% أو إضافة طبقة شبه شفافة. للشعارات والعناصر العلاماتية، استخدم النسخة المخصصة للخلفية الداكنة. يدعم iOS Asset Catalog وAndroid VectorDrawable موارد منفصلة للسمات الفاتحة والداكنة.
الاختيار بين السمتين يعتمد على ظروف الاستخدام ونوع المحتوى وتفضيلات المستخدم. أظهرت دراسة لمجموعة Nielsen Norman (2020): في الإضاءة العادية، يوفر الوضع الفاتح سرعة قراءة أعلى بنسبة 15-20%. ومع ذلك، في ظروف الإضاءة المنخفضة، يقلل الوضع الداكن من إجهاد العين ويحسن قابلية القراءة. للواجهات ذات الكميات الكبيرة من النص (مقالات، مستندات)، يكون الوضع الفاتح عادةً أفضل.
استهلاك الطاقة — حجة رئيسية للوضع الداكن على OLED. وفقًا لـ Google (2019)، يستهلك YouTube في السمة الداكنة على شاشة OLED طاقة أقل بنسبة 43% مقارنة بالسمة الفاتحة. Google Maps — بنسبة 32%. كلما كانت الواجهة أكثر سطوعًا وكلما ارتفع مستوى سطوع الشاشة، زاد التوفير. على شاشات LCD، لا يتجاوز التوفير 5%. بالنسبة للمستخدمين الذين يعملون كثيرًا مع التطبيق في الخارج تحت أشعة الشمس الساطعة، يظل الوضع الفاتح الخيار الوحيد المقروء.
| المعيار | الوضع الداكن | الوضع الفاتح |
|---|---|---|
| قابلية القراءة في الضوء الساطع | منخفضة (وهج على خلفية داكنة) | عالية (أقصى تباين) |
| إجهاد العين في الظلام | منخفض | عالٍ (ضوء ساطع) |
| استهلاك الطاقة OLED | منخفض (حتى -60%) | مرتفع |
| استهلاك الطاقة LCD | مشابه (±5%) | مشابه (±5%) |
| إدراك الألوان | مشوه (تشبع منخفض) | طبيعي |
| التكيف | يتطلب وقتًا للتأقلم | طبيعي للعين |
توصيات IT Sectr — نحن ننفذ كلا السمتين مع خيارات التبديل: النظام (اتباع النظام)، داكن، فاتح. لا ينبغي أن يكون التبديل التلقائي هو الخيار الوحيد — قد يرغب المستخدم في السمة الداكنة أثناء النهار (للصداع النصفي) أو السمة الفاتحة ليلاً (للقراءة). في مشاريعنا، نضيف مفتاح السمة في إعدادات الملف الشخصي ونتذكر الاختيار. للتطبيقات ذات المحتوى المتميز (الصور، الفيديو)، يُوصى بمعاينة السمة قبل التطبيق.
الأسئلة المتكررة
نعم، على شاشات OLED يمكن أن يصل التوفير إلى 60% (Google، Pixel، 2019). كلما كانت الواجهة أكثر سطوعًا، زاد التوفير. على شاشات LCD، الفرق ضئيل — حتى 5%، لأن الإضاءة الخلفية للمصفوفة تعمل بغض النظر عن لون البكسل. إذا كان المستخدم يستخدم التطبيق بنشاط مع عناصر بيضاء في الغالب، فإن الوضع الداكن يعطي أقصى تأثير.
الوضع الداكن — مفهوم عام للمخطط الداكن للواجهة. Material You Dynamic Themes (Android 12+) — تطبيق يولد تلقائيًا لوحة داكنة من خلفية الجهاز. يمكن للمستخدم تفعيل السمة الداكنة إجباريًا، وسيقوم Material You بضبط الألوان وفقًا للوحة المخصصة بدلاً من استخدام ألوان داكنة ثابتة.
اذهب إلى الإعدادات → الشاشة والسطوع → المظهر واختر «داكن». برمجيًا: قم بتعيين window.overrideUserInterfaceStyle = .dark في AppDelegate. كما يتوفر التبديل التلقائي وفقًا لجدول زمني (غروب/شروق الشمس أو وقت مخصص)، مما يسمح بالانتقال السلس بين السمتين خلال اليوم.
forceDarkMode (Android 10+) — خيار نظامي للتفعيل الإجباري للسمة الداكنة في التطبيقات التي لا تدعمها أصلاً. يقوم Android بعكس ألوان الشاشة تلقائيًا. للحصول على سمة داكنة عالية الجودة، يجب على المطور تنفيذ لوحته الخاصة من خلال values-night وتعطيل forceDarkAllowed.
ظهر الوضع الداكن النظامي في iOS 13 (سبتمبر 2019) وAndroid 10 (سبتمبر 2019). قبل ذلك، كان المطورون ينفذون السمات الداكنة بأنفسهم. في عام 2026، أكثر من 80% من أفضل التطبيقات في App Store وGoogle Play تدعم الوضع الداكن، وتوصي Apple وGoogle به كخيار إلزامي.
الخلاصة
سنقوم بتطوير تطبيق جوال جاهز
تقدم IT Sectr تطبيقات iOS وAndroid للشركات الناشئة والشركات منذ عام 2017. سوف نقدم لك النصح ونقترح أفضل حل.