كيفية تغيير لون نص شريط الحالة في iOS 7


14 Answers

بدلاً من ذلك ، يمكنك إلغاء الاشتراك في مظهر شريط الحالة القائم على وحدة تحكم العرض:

  1. تعيين View controller-based status bar appearance إلى NO في Info.plist الخاص بك.
  2. استدعاء [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

ملاحظة: تم إهمال هذه الطريقة في iOS9. استخدم preferStatusBarStyle على UIViewController بدلاً من ذلك. (انظر مكتبة مطوري Apple )

Question

يحتوي طلبي على خلفية داكنة ، ولكن في نظام iOS 7 ، أصبح شريط الحالة شفافًا. لذلك لا أرى أي شيء هناك ، فقط مؤشر البطارية الأخضر في الزاوية. كيف يمكنني تغيير لون شريط شريط الحالة إلى اللون الأبيض كما هو على الشاشة الرئيسية؟




فقط خطوتين على النحو التالي:

الخطوة 1:

ضمن علامة التبويب "معلومات" في project target ، أضف "إضافة صف":

UIViewControllerBasedStatusBarAppearance ، set value NO .

الخطوة 2:

في المشروع AppDelegate.m :

- (BOOL)application:(UIApplication *)application 
        didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
    …
    [application setStatusBarStyle:UIStatusBarStyleLightContent];
    …
}



لا شيء من هذا العمل بالنسبة لي ، لذلك هنا هو حل يعمل ...

في Info.plist ، أضف صفًا:

UIViewControllerBasedStatusBarAppearance ، وتعيين القيمة NO .

ثم في AppDelegate في didFinishLaunchingWithOptions ، أضف هذه الصفوف:

[application setStatusBarHidden:NO];
[application setStatusBarStyle:UIStatusBarStyleLightContent];



إذا كنت تريد نفس النتيجة مع Swift ، فيمكنك استخدام هذا الرمز في ملف AppDelegate.swift الخاص بك:

UINavigationBar.appearance().barStyle = .BlackTranslucent

وسوف يكون نص شريط الحالة أبيض :-)!




إذا كنت لا تزال تريد استخدام View controller-based status bar appearance في info.plist لتعيين YES ، وهذا يعني أنه يمكنك تغيير شريط الحالة لكل وحدة تحكم في العرض ، فاستخدم ما يلي للنص الأبيض في شريط الحالة في ViewDidLoad:

[[[self navigationController] navigationBar] setBarStyle:UIBarStyleBlackTranslucent];



لا حاجة للقيام ببعض إضافي ، فقط اكتب هذا الرمز في viewController الخاص بك والحصول على لون شريط الحالة أبيض

- (UIStatusBarStyle)preferredStatusBarStyle{return UIStatusBarStyleLightContent;}



المفتاح لجعل هذا العمل هو أن فقط تحكم عرض ملء الشاشة للحصول على إملاء نمط شريط الحالة.

إذا كنت تستخدم وحدة تحكم في التنقل وترغب في التحكم في شريط الحالة على أساس وحدة التحكم لكل عرض ، فستحتاج إلى فئة فرعية UINavigationController وتطبيق preferStatusBarStyle بحيث تقوم بإرجاع تفضيل topViewController.

تأكد من تغيير مرجع الفصل في مشهد لوحة العمل الخاص بك من UINavigationController إلى الفئة الفرعية الخاصة بك (على سبيل المثال MyNavigationController في المثال أدناه).

(إن الأعمال التالية بالنسبة لي. إذا كان التطبيق الخاص بك هو TabBar ، سترغب في القيام بشيء مماثل عن طريق تصنيف UITabBarController ولكن لم أحاول ذلك).

@interface MyNavigationController : UINavigationController

@end

@implementation MyNavigationController

- (UIStatusBarStyle)preferredStatusBarStyle
{
    return self.topViewController.preferredStatusBarStyle;
}

@end



في Swift 3 من السهل جدا فقط مع 2 خطوات. انتقل إلى info.plist وقم بتغيير View controller-based status bar appearance إلى "NO". ثم في Appdelegate مجرد إضافة هذا السطر في طريقة didfinishlaunchingwithoptions

  func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
        // Override point for customization after application launch.
        UIApplication.shared.statusBarStyle = .lightContent
        return true
    }



في info.plist قم بتعيين قيمة الحقل NO ظهور مظهر شريط الحالة القائم على وحدة التحكم وتعيين ضوء نمط شريط الحالة في الهدف> الإعداد العام.




أنا أستخدم Xcode 6 beta 5 في مشروع Swift ، لتطبيق iOS 7.

هذا ما فعلته ، وهو يعمل:

info.plist:




ببساطة في Appdelegate

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];



  1. انتقل إلى Project -> Target ،

  2. ثم قم بتعيين Status Bar Style Light . يجعل شريط الحالة أبيض من شاشة الإطلاق.

  3. ثم قم بتعيين View controller-based status bar appearance يساوي NO في Info.plist .




ببساطة الاتصال

[[UINavigationBar appearance] setBarStyle:UIBarStyleBlack];

في ال

-(BOOL)application:(UIApplication *)application 
           didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
}

طريقة AppDelegate يعمل بشكل AppDelegate بالنسبة لي في iOS7.




في حالة وجود UViewController الخاص بك داخل UINavigationController ، يجب عليك تعيين BarStyle:

-[UINavigationBar setBarStyle:UIBarStyleBlack]

الجواب الأصلي هنا

https://devforums.apple.com/message/844264#844264




ملاحظة: لا تعمل معظم الإجابات المُذهلة في iOS 7/8

في مجموعة Info.plist "مظهر شريط الحالة القائم على وحدة التحكم عرض" كـ NO

في AppDelegate إضافة

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

إلى

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
   ......
   ...
}    

يعمل هذا الحل لنظام iOS 7/8




Related