การเปลี่ยนสีข้อความแถบสถานะในหน้าจอเริ่มต้น iOS 7


98

ฉันรู้ว่ามีคำถามstackoverflow อยู่แล้วที่บอกว่าจะเปลี่ยนแถบสถานะสำหรับตัวควบคุมมุมมองทั้งหมดได้อย่างไร ฉันกำลังเปลี่ยนสีของแถบสถานะด้วยวิธีนี้:

if(IS_IOS7)
    [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

ใน application:DidFinishLaunching

นอกจากนี้ฉันได้เปลี่ยนค่าของUIViewControllerBasedStatusBarAppearanceใน plist เป็นNO. อย่างไรก็ตามในหน้าจอเริ่มต้นจะยังคงแสดงข้อความในแถบสถานะด้วยสีดำ

มันเป็นไปได้ที่จะเปลี่ยนสีของสีข้อความแถบสถานะในหน้าจอ ?


คุณหมายถึงอะไร 'มันยังคงแสดงแถบสถานะด้วยสีดำ': หากรหัสของคุณใช้งานได้แบบอักษรของแถบสถานะควรเป็นสีขาวสีพื้นหลังของแถบสถานะจะขึ้นอยู่กับภาพสแปลชของคุณ (ซึ่งตอนนี้ควรมีความสูงของแถบสถานะ - 20 พิกเซล)
Vinzzz

ขออภัยฉันพลาดคำที่เป็นข้อความจริงๆ ฉันกำลังเปลี่ยนเฉพาะสีข้อความของแถบสถานะ ฉันสามารถเปลี่ยนได้หลังจากเกิดหน้าจอเริ่มต้น แต่ฉันไม่สามารถเปลี่ยนได้เมื่อหน้าจอเริ่มต้นเกิดขึ้น
Tiago Almeida

คำตอบ:


224

ในไฟล์ plist โปรเจ็กต์ให้เพิ่มคุณสมบัติ "Status Bar Style" (คีย์คือUIStatusBarStyle) จากนั้นละเว้นค่าที่เป็นไปได้ทั้งหมดที่แสดงในรายการแบบเลื่อนลงสำหรับคุณสมบัตินี้และพิมพ์UIStatusBarStyleLightContentแทน

และคุณไม่จำเป็นต้องตั้งค่าUIViewControllerBasedStatusBarAppearanceเป็นNOใน plist ของคุณคุณสามารถตั้งค่าที่preferredStatusBarStyleคุณต้องการให้กับตัวควบคุมมุมมองของคุณได้


มีวิธีใดบ้างที่จะทำให้สิ่งนี้เข้ากันได้กับแถบสถานะสีบน iOS 6
Rafael Nobre

1
สีข้อความของแถบสถานะเป็นสีขาวหรือดำ พื้นหลังของแถบมาจากภาพเปิดตัวของคุณจากนั้นจากมุมมองของ viewController หากขยายออกไปด้านล่างแถบ
Vinzzz

1
หลังจากตันของวิธีการที่แตกต่างกันวิธีนี้ใช้งานได้ในที่สุด (โดยตั้งค่า UIViewControllerBasedStatusBarAppearance เป็น NO) คุณคือฮีโร่
Tamás Sengel

คุณสามารถทำได้ด้วยรหัส UIApplication.sharedApplication (). statusBarStyle = .LightContent ฉันทำใน AppDelegate
Yasmin Tiomkin

@Yasmin: เพื่อเปลี่ยนสีหลังจากหน้าจอเริ่มต้นการแก้ปัญหานี้เป็นส่วนหนึ่งของคำถามแล้ว;)
Vinzzz

33

คุณสามารถทำได้โดยไม่ต้องเขียนโค้ดบรรทัดใด ๆ
ทำสิ่งต่อไปนี้เพื่อทำให้ข้อความในแถบสถานะเป็นสีขาวทั้งแอพ

ในไฟล์plist โครงการของคุณ:

  • รูปแบบแถบสถานะ: UIStatusBarStyleLightContent
  • ดูลักษณะแถบสถานะตามคอนโทรลเลอร์: NO
  • แถบสถานะถูกซ่อนในตอนแรก: NO

คำตอบที่ยอมรับนั้นดี แต่ใช้ไม่ได้กับตัวควบคุมมุมมองทั้งหมดของฉันโดยไม่ทำสัญลักษณ์แสดงหัวข้อย่อยที่ 2 ด้านบน ขอบคุณ!
Clifton Labrum

"ดูลักษณะแถบสถานะที่อิงตามคอนโทรลเลอร์: YES" ดูเหมือนจะทำเคล็ดลับได้ (iOS 9)
Nicolas Miari

19

คุณสามารถทำสิ่งต่อไปนี้เพื่อรับแถบสถานะสีอ่อนได้ตลอดทั้งแอปพลิเคชัน

  1. เลือกชื่อของโปรเจ็กต์ในตัวนำทางโปรเจ็กต์
  2. เลือกชื่อของเป้าหมายจากรายการในคอลัมน์ด้านซ้ายของตัวแก้ไขโครงการ
  3. คลิกทั่วไปที่ด้านบนสุดของตัวแก้ไขโครงการ
  4. ตั้งค่ารูปแบบแถบสถานะ -> แสง

ในไฟล์ plist ของคุณเพิ่มค่าต่อไปนี้:

  1. สไตล์แถบสถานะ - UIStatusBarStyleLightContent
  2. ดูลักษณะแถบสถานะตามคอนโทรลเลอร์ - NO

สิ่งนี้จะช่วยให้คุณได้รับแถบสถานะเป็นสีขาวตลอดทั้งแอปพลิเคชันรวมถึง SPLASH SCREEN


7

ตั้งค่าเป็นUIViewControllerBasedStatusBarAppearanceNo ใน plist

จากนั้นเพิ่มรหัสต่อไปนี้ในตัวเลือกการเปิดใช้งานเสร็จสิ้น

if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7) {

   [application setStatusBarStyle:UIStatusBarStyleLightContent];

    self.window.clipsToBounds =YES;

    self.window.frame =  CGRectMake(0,20,self.window.frame.size.width,self.window.frame.size.height-20);
}

โปรดปฏิบัติตามรหัสนี้ที่ได้ผลสำหรับฉัน


นี่กำลังแสดงข้อความสีขาวบนแถบสถานะในขณะที่พื้นหลังของฉันก็สว่างเช่นกัน ฉันจะแสดงข้อความสีดำได้อย่างไร
Mangesh

Mangesh on the Target ไปที่การตั้งค่าทั่วไปที่นั่นคุณจะมีตัวเลือกในการตั้งค่ารูปแบบแถบสถานะ
Preejith augustine

คุณสามารถเขียนบรรทัดแรกให้ง่ายขึ้นเล็กน้อยโดยใช้ dot syntax ดังนี้ if (UIDevice.currentDevice.systemVersion.floatValue >= 7) {
Todd Lehman

2

นี่คือหลักเกณฑ์ / คำแนะนำของ Appleเกี่ยวกับการเปลี่ยนแปลงแถบสถานะ

นี่คือ - วิธีเปลี่ยนรูปแบบแถบสถานะ:

หากคุณต้องการตั้งค่ารูปแบบแถบสถานะระดับแอปพลิเคชันจากนั้นตั้งค่าUIViewControllerBasedStatusBarAppearanceเป็นNOในไฟล์ ".plist" ของคุณ

หากคุณต้องการตั้งค่ารูปแบบแถบสถานะที่ระดับตัวควบคุมมุมมองให้ทำตามขั้นตอนเหล่านี้:

  1. การตั้งค่าUIViewControllerBasedStatusBarAppearanceไปYESใน.plistแฟ้มถ้าคุณจำเป็นต้องตั้งค่าสถานะสไตล์บาร์ในระดับ UIViewController เท่านั้น
  2. ในฟังก์ชั่นเพิ่ม viewDidLoad - setNeedsStatusBarAppearanceUpdate

  3. แทนที่ recommendedStatusBarStyle ในตัวควบคุมมุมมองของคุณ

-

override func viewDidLoad() {
    super.viewDidLoad()
    self.setNeedsStatusBarAppearanceUpdate()
}

override var preferredStatusBarStyle: UIStatusBarStyle {
    return .lightContent
}

กำหนดค่าของ. plist ตามระดับการตั้งค่าสไตล์แถบสถานะ ป้อนคำอธิบายภาพที่นี่


คุณสามารถตั้งค่าสีพื้นหลังสำหรับแถบสถานะระหว่างการเปิดแอปพลิเคชันหรือระหว่าง viewDidLoad ของตัวควบคุมมุมมองของคุณ

extension UIApplication {

    var statusBarView: UIView? {
        return value(forKey: "statusBar") as? UIView
    }

}

// Set upon application launch, if you've application based status bar
class AppDelegate: UIResponder, UIApplicationDelegate {

    var window: UIWindow?

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
        UIApplication.shared.statusBarView?.backgroundColor = UIColor.red
        return true
    }
}


or 
// Set it from your view controller if you've view controller based statusbar
class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        UIApplication.shared.statusBarView?.backgroundColor = UIColor.red
    }

}



นี่คือผลลัพธ์:

ป้อนคำอธิบายภาพที่นี่


1

คุณสามารถทำสิ่งต่อไปนี้เพื่อรับแถบสถานะสีอ่อนได้ตลอดทั้งแอปพลิเคชัน

เลือกชื่อของโปรเจ็กต์ในตัวนำทางโปรเจ็กต์ เลือกชื่อของเป้าหมายจากรายการในคอลัมน์ด้านซ้ายของตัวแก้ไขโครงการ คลิกทั่วไปที่ด้านบนสุดของตัวแก้ไขโครงการ ตั้งค่ารูปแบบแถบสถานะ -> แสง

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.