แอปพลิเคชันของฉันมีพื้นหลังสีดำ แต่ใน iOS 7 แถบสถานะจะโปร่งใส ดังนั้นฉันไม่เห็นอะไรเลยมีเพียงไฟแสดงสถานะแบตเตอรี่สีเขียวที่มุม ฉันจะเปลี่ยนสีข้อความของแถบสถานะเป็นสีขาวเหมือนที่ปรากฏบนหน้าจอหลักได้อย่างไร
แอปพลิเคชันของฉันมีพื้นหลังสีดำ แต่ใน iOS 7 แถบสถานะจะโปร่งใส ดังนั้นฉันไม่เห็นอะไรเลยมีเพียงไฟแสดงสถานะแบตเตอรี่สีเขียวที่มุม ฉันจะเปลี่ยนสีข้อความของแถบสถานะเป็นสีขาวเหมือนที่ปรากฏบนหน้าจอหลักได้อย่างไร
คำตอบ:
การตั้งค่าUIViewControllerBasedStatusBarAppearance
ไปYES
ในแฟ้ม .plist
ในการviewDidLoad
ทำ[self setNeedsStatusBarAppearanceUpdate];
เพิ่มวิธีการต่อไปนี้:
- (UIStatusBarStyle)preferredStatusBarStyle
{
return UIStatusBarStyleLightContent;
}
หมายเหตุ : วิธีนี้ใช้ไม่ได้กับคอนโทรลเลอร์ภายในUINavigationController
โปรดดูความคิดเห็นของ Tyson ด้านล่าง :)
สวิฟท์ 3 - UINavigationController
นี้จะควบคุมการทำงานภายใน เพิ่มรหัสนี้ภายในตัวควบคุมของคุณ
// Preferred status bar style lightContent to use on dark background.
// Swift 3
override var preferredStatusBarStyle: UIStatusBarStyle {
return .lightContent
}
Swift 5 และ SwiftUI
สำหรับ SwiftUI สร้างไฟล์ swift ใหม่ที่เรียกว่า HostingController.swift
import Foundation
import UIKit
import SwiftUI
class HostingController: UIHostingController<ContentView> {
override var preferredStatusBarStyle: UIStatusBarStyle {
return .lightContent
}
}
จากนั้นเปลี่ยนบรรทัดโค้ดต่อไปนี้ใน SceneDelegate.swift
window.rootViewController = UIHostingController(rootView: ContentView())
ถึง
window.rootViewController = HostingController(rootView: ContentView())
หรือคุณสามารถเลือกไม่ใช้การปรากฏตัวของแถบสถานะตามมุมมองคอนโทรลเลอร์:
View controller-based status bar appearance
ไว้NO
ในของคุณInfo.plist
ในของคุณ[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
หมายเหตุ: วิธีนี้เลิกใช้แล้วใน iOS9 ใช้preferredStatusBarStyle
บน UIViewController แทน (ดูห้องสมุดนักพัฒนา Apple )
คุณสามารถทำได้โดยไม่ต้องเขียนโค้ดเลย!
ทำสิ่งต่อไปนี้เพื่อทำให้สีข้อความของแถบสถานะเป็นสีขาวผ่านแอพทั้งหมด
ในไฟล์Plist โครงการของคุณ:
Transparent black style (alpha of 0.5)
NO
NO
UIStatusBarStyleLightContent
ในplist info
HOWEVER Transparent Black
ที่ซึ่งจะทำแบบเดียวกัน :) บวกคุณต้องเพิ่มView controller-based status bar appearance
เพราะมันไม่ได้อยู่ที่นั่นและมันคือทั้งหมดที่คุณต้องใช้เพื่อให้มันทำงาน :)
<key>UIStatusBarStyle</key> <string>UIStatusBarStyleLightContent</string> <key>UIViewControllerBasedStatusBarAppearance</key> <false/>
หมายเหตุ: คำตอบ upvoted ส่วนใหญ่ไม่ทำงานสำหรับ iOS 7/8
ใน Info.plist ให้ตั้งค่า 'ดูสถานะแถบตัวควบคุมตามสถานะ' เป็น NO
ใน AppDelegate เพิ่ม
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
ถึง
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
......
...
}
วิธีนี้ใช้ได้กับ iOS 7/8
สำหรับฉันไม่มีอะไรเกิดขึ้นกับการใช้ทุกสิ่งในคำตอบอื่น ๆ (และจากแหล่งข้อมูลอื่น ๆ / เอกสาร) สิ่งที่ช่วยได้คือการตั้งค่าสไตล์แถบการนำทางเป็น "สีดำ" ใน XIB สิ่งนี้เปลี่ยนข้อความเป็นสีขาวโดยไม่มีรหัสใด ๆ เลย
ไม่มีสิ่งใดที่เหมาะกับฉันดังนั้นนี่เป็นวิธีแก้ปัญหาที่ทำงานได้ ...
ในInfo.plist
เพิ่มแถว:
UIViewControllerBasedStatusBarAppearance
NO
และการตั้งค่า
จากนั้นใน AppDelegate didFinishLaunchingWithOptions
ให้เพิ่มแถวเหล่านี้:
[application setStatusBarHidden:NO];
[application setStatusBarStyle:UIStatusBarStyleLightContent];
คุณไม่จำเป็นต้องทำรหัสใด ๆ สำหรับสิ่งนี้
คุณต้องเพิ่มปุ่ม "ดูลักษณะแถบสถานะตามตัวควบคุม" ใน info.plist ดังต่อไปนี้:
& ตั้งค่าประเภทเป็น Boolean & ค่าเป็น NO จากนั้นคลิกที่การตั้งค่าโครงการจากนั้นคลิกที่แท็บทั่วไปและภายใต้ข้อมูลการปรับใช้ตั้งค่าสไตล์แถบสถานะที่ต้องการเป็น. Light ดังนี้:
แค่นั้นแหละ.
เพียงสองขั้นตอนดังต่อไปนี้:
ขั้นตอนที่ 1:
ใต้แท็บข้อมูลของ project target
, เพิ่มแถว:
UIViewControllerBasedStatusBarAppearance
, ตั้งค่า NO
ค่าที่ตั้งไว้
ขั้นตอนที่ 2:
ในโครงการAppDelegate.m
:
- (BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
…
[application setStatusBarStyle:UIStatusBarStyleLightContent];
…
}
ใช้งานได้ใน Golden Master iOS 7 และ Xcode 5 GM seed และ iOS7 SDK ที่วางจำหน่ายเมื่อวันที่ 18 กันยายน 2013 (อย่างน้อยก็ซ่อนตัวควบคุมการนำทางไว้):
ตั้งค่าthe UIViewControllerBasedStatusBarAppearance
การในNO
Info.plist
ไม่ว่าจะในViewDidLoad
วิธีการหรือที่ใดก็ตามคุณต้องการเปลี่ยนรูปแบบของแถบสถานะที่ใด:
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
ในกรณีที่ UIViewController ของคุณอยู่ใน UINavigationController คุณจะต้องตั้งค่า BarStyle:
-[UINavigationBar setBarStyle:UIBarStyleBlack]
คำตอบเดิมอยู่ที่นี่
หากคุณมีตัวควบคุมการนำทางแบบฝังที่สร้างขึ้นผ่านตัวสร้างส่วนต่ออย่าลืมตั้งค่าต่อไปนี้ในคลาสที่จัดการตัวควบคุมทิศทางของคุณ:
-(UIStatusBarStyle)preferredStatusBarStyle{
return UIStatusBarStyleLightContent;
}
นั่นควรเป็นสิ่งที่คุณต้องการ
ใน AppDelegate.m เพิ่มต่อไปนี้
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
}
และในไฟล์ Plist ให้ตั้งค่า 'ดูลักษณะแถบสถานะตามคอนโทรลเลอร์' เป็น NO
เพียงแค่ใน Appdelegate
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
มันทำงานได้ดีเหมือนเค้กชิ้นหนึ่งสำหรับฉัน
ไปที่แอพของinfo.plist
คุณ
View controller-based status bar appearance
เป็นNO
Status bar style
เป็นUIStatusBarStyleLightContent
จากนั้นไปที่ผู้มอบสิทธิ์แอพของคุณและวางรหัสต่อไปนี้ซึ่งคุณตั้งค่า RootViewController ของ Windows
#define SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedAscending)
if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"7.0"))
{
UIView *view=[[UIView alloc] initWithFrame:CGRectMake(0, 0,320, 20)];
view.backgroundColor=[UIColor colorWithRed:0/255.0 green:0/255.0 blue:0/255.0 alpha:1.0];
[self.window.rootViewController.view addSubview:view];
}
การเล่นชนิดหนึ่ง มันใช้งานได้สำหรับฉัน
View controller-based status bar appearance equal
ที่จะNO
เป็นส่วนหนึ่งที่ผมหายไป ขอบคุณ
ใน Swift 3 นั้นง่ายมากเพียงแค่ 2 ขั้นตอน ไปที่ info.plist ของคุณและเปลี่ยนรหัสView controller-based status bar appearance
เป็น "ไม่" จากนั้นใน Appdelegate เพียงเพิ่มบรรทัดนี้ในวิธีการที่ไม่ได้เปิดใช้งานด้วยตัวเลือก
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
UIApplication.shared.statusBarStyle = .lightContent
return true
}
สิ่งนี้เลิกใช้แล้วใน iOS9 ในตอนนี้คุณควรจะลบล้างคุณสมบัตินี้ใน rootviewcontroller
การทำสิ่งนี้เลิกใช้แล้วใน iOS 9 ควรทำสิ่งนี้กับ rootviewcontroller
override var preferredStatusBarStyle: UIStatusBarStyle {
return .lightContent
}
iOS 7 อนุญาตให้ตัวควบคุมมุมมองแต่ละตัวกำหนดลักษณะที่ปรากฏของแถบสถานะดังที่อธิบายไว้ในเอกสารประกอบสำหรับนักพัฒนาของ Apple:
iOS 7 ให้มุมมองตัวควบคุมความสามารถในการปรับสไตล์ของแถบสถานะในขณะที่แอพกำลังทำงาน วิธีที่ดีที่จะเปลี่ยนลักษณะแถบสถานะแบบไดนามิกคือการดำเนินการและการเคลื่อนไหวภายในบล็อกปรับปรุงลักษณะแถบสถานะและการโทร
preferredStatusBarStyle
setNeedsStatusBarAppearanceUpdate
การตั้งค่าลักษณะแถบสถานะทั่วโลกเป็นกระบวนการสองขั้นตอน
ก่อนอื่นคุณต้องบอก iOS ว่าคุณไม่ต้องการตั้งค่าลักษณะแถบสถานะแบบทีละมุมมอง
จากนั้นคุณต้องรับผิดชอบและกำหนดรูปแบบแถบสถานะใหม่ทั่วโลก
ไปที่มุมมองโดยมุมมองการควบคุมแถบสถานะปิดการใช้งานคุณจะต้องตั้งค่าคุณสมบัติในView controller-based status bar appearance
Info.plist
เปิด Project Navigator และเลือกโครงการสำหรับแอป iOS ของคุณจากนั้นเลือกแท็บข้อมูล
.plist
เลื่อนเมาส์ไปที่แถวนั้นคลิกที่เครื่องหมายบวกปรากฏว่าการเพิ่มคุณสมบัติใหม่ที่คุณ
ใส่ในเขตข้อมูลคีย์แล้วให้แน่ใจว่าข้อมูลประเภทมีการตั้งค่าView controller-based status bar appearance
Boolean
ในที่สุดป้อนNO
ในฟิลด์ค่า
การตั้งค่ารูปแบบทั่วโลกสำหรับแถบสถานะเพิ่มคุณสมบัติอื่นภายใต้แท็บข้อมูลด้วยกุญแจของStatus bar style
เป็นประเภทและมูลค่าของString
Opaque black style
นี่คือโพสต์บล็อกที่มีรายละเอียดเพิ่มเติมเล็กน้อยและโค้ดตัวอย่างบางส่วน:
http://codebleep.com/setting-the-status-bar-text-color-in-ios-7/
ไม่จำเป็นต้องทำอะไรเพิ่มเพียงแค่เขียนโค้ดนี้ใน viewController ของคุณและรับแถบสถานะสีขาว
- (UIStatusBarStyle)preferredStatusBarStyle{return UIStatusBarStyleLightContent;}
คำตอบอัพเดทสำหรับสำหรับ Xcode GM Seed:
ในการInfo.plist
ใส่View controller-based status bar appearance
เป็นNO
ในโครงการตั้ง:
ใน ViewDidLoad:
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
ฉันคิดว่าคำตอบทั้งหมดไม่ได้ชี้ปัญหาเพราะพวกเขาทั้งหมดทำงานในสถานการณ์เฉพาะ แต่ถ้าคุณจำเป็นต้องครอบคลุมทุกกรณีตามคะแนนร้อง:
ขึ้นอยู่กับว่าคุณต้องการสไตล์แถบแสงในสถานะไหนคุณควรคำนึงถึง 3 จุดต่อไปนี้:
1) หากคุณต้องการแถบสถานะที่หน้าจอเปิดตัวหรือในที่อื่น ๆ ซึ่งคุณไม่สามารถควบคุมได้ (ไม่ใช่ในตัวควบคุมมุมมอง แต่เป็นองค์ประกอบ / ช่วงเวลาที่ระบบควบคุมเช่นช่วงหน้าจอเรียกใช้) คุณไปที่การตั้งค่าโครงการ
2) หากคุณมีตัวควบคุมอยู่ภายในตัวควบคุมการนำทาง คุณสามารถเปลี่ยนได้ในตัวสร้างส่วนต่อประสานดังนี้:
a) เลือกแถบนำทางของตัวควบคุมทิศทาง
b) จากนั้นตั้งค่าสไตล์ของแถบนำทางเป็น "Black" เพราะนี่หมายความว่าคุณจะมี "black" -> พื้นหลังสีดำใต้แถบสถานะของคุณดังนั้นมันจะตั้งแถบสถานะเป็นสีขาว
หรือทำในรหัสดังนี้
navigationController?.navigationBar.barStyle = UIBarStyle.Black
3) ถ้าคุณมีคอนโทรลเลอร์เพียงอย่างเดียวที่ต้องมีสไตล์เป็นแถบสถานะของตัวเองและมันไม่ได้ฝังอยู่ในโครงสร้างคอนเทนเนอร์บางอย่างในฐานะ UINavigationController
กำหนดลักษณะแถบสถานะในรหัสสำหรับตัวควบคุม:
เพียงแค่โทร
[[UINavigationBar appearance] setBarStyle:UIBarStyleBlack];
ใน
-(BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
}
วิธีการของฉันใช้AppDelegate
งานได้ดีสำหรับฉันใน iOS7
View controller-based status bar appearance = NO
เอกสารนี้มีอยู่ในคู่มือการเปลี่ยน iOS 7 UIซึ่งคุณต้องมี ID นักพัฒนาของ Apple เพื่อเข้าถึงโดยตรง ข้อความที่ตัดตอนมาที่เกี่ยวข้อง:
เนื่องจากแถบสถานะโปร่งใสมุมมองด้านหลังจะแสดงผ่าน [... ] ใช้
UIStatusBarStyle
ค่าคงที่เพื่อระบุว่าเนื้อหาในแถบสถานะควรมืดหรือสว่าง:
UIStatusBarStyleDefault
แสดงเนื้อหามืด [ ... ]
UIStatusBarStyleLightContent
แสดงเนื้อหาเบา ใช้เมื่อเนื้อหามืดอยู่ด้านหลังแถบสถานะ
อาจเป็นไปได้ที่น่าสนใจ:
ใน iOS 7 คุณสามารถควบคุมสไตล์ของแถบสถานะจากคอนโทรลเลอร์ vew แต่ละตัวและเปลี่ยนในขณะที่แอพทำงาน การเลือกในพฤติกรรมนี้เพิ่ม
UIViewControllerBasedStatusBarAppearance
ที่สำคัญในการของแอปไฟล์และให้มันคุ้มค่าInfo.plist
YES
ฉันขอแนะนำให้ดูเอกสารอย่างแน่นอนซึ่งคุณสามารถเข้าถึงได้ด้วย ID นักพัฒนา Apple ของคุณ
นี่คือหลักเกณฑ์ / คำแนะนำของ Appleเกี่ยวกับการเปลี่ยนแถบสถานะ อนุญาตเฉพาะ Dark & light (ในขณะที่ & black) ในแถบสถานะ
นี่คือ - วิธีการเปลี่ยนรูปแบบแถบสถานะ:
หากคุณต้องการตั้งค่าสไตล์แถบสถานะระดับแอปพลิเคชันจากนั้นตั้งค่าUIViewControllerBasedStatusBarAppearance
เป็นNO
ในไฟล์ `.plist '
หากคุณต้องการตั้งค่าสไตล์แถบสถานะที่ระดับตัวควบคุมมุมมองจากนั้นทำตามขั้นตอนเหล่านี้:
UIViewControllerBasedStatusBarAppearance
ไปYES
ใน.plist
แฟ้มถ้าคุณจำเป็นต้องตั้งค่าสถานะสไตล์บาร์ในระดับ UIViewController เท่านั้นในฟังก์ชั่นเพิ่ม viewDidLoad - setNeedsStatusBarAppearanceUpdate
แทนที่ที่ต้องการStatusBarStyleในตัวควบคุมมุมมองของคุณ
-
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
}
}
นี่คือผลลัพธ์:
ฉันทำบางสิ่งที่แตกต่างและทำงานได้สำหรับฉัน
เมื่อไม่มีการเปลี่ยนแปลงรหัสฉันได้กำหนดค่าไฟล์. plist ของฉันดังนี้:
ฉันหวังว่ามันจะช่วย
สำหรับตัวควบคุมมุมมองแต่ละตัวฉันเปลี่ยนคุณสมบัติ "ตัวชี้วัดจำลอง" ในกระดานเรื่องราวจาก "สรุป" เป็น "เนื้อหาเบา"
หากคุณต้องการผลลัพธ์เดียวกันกับ Swift คุณสามารถใช้รหัสนี้ในไฟล์ AppDelegate.swift ของคุณ:
UINavigationBar.appearance().barStyle = .BlackTranslucent
และข้อความในแถบสถานะของคุณจะเป็นสีขาว :-)!
หากคุณยังต้องการใช้View controller-based status bar appearance
ใน info.plist ตั้งค่าเป็น YES ซึ่งหมายความว่าคุณสามารถเปลี่ยนแถบสถานะสำหรับแต่ละมุมมองคอนโทรลเลอร์ได้ให้ใช้ข้อความต่อไปนี้สำหรับข้อความสีขาวในแถบสถานะใน ViewDidLoad:
[[[self navigationController] navigationBar] setBarStyle:UIBarStyleBlackTranslucent];
ใน Plist เพิ่มสิ่งนี้:
UIStatusBarStyleLightContent
NO
ใน info.plist ตั้งค่าฟิลด์ NO ดูลักษณะแถบสถานะตามคอนโทรลเลอร์และตั้งแสงสไตล์ของแถบสถานะในเป้าหมาย> การตั้งค่าทั่วไป
ฉันจะให้คำตอบที่สมบูรณ์สำหรับคำถามของคุณ การเปลี่ยนสีข้อความของแถบสถานะนั้นง่ายมาก แต่มันสับสนเล็กน้อยใน iOS 7 โดยเฉพาะสำหรับมือใหม่
หากคุณพยายามเปลี่ยนสีจากสีดำเป็นสีขาวใน Storyboard โดยเลือกตัวควบคุมมุมมองและไปที่ตัวจำลองแบบทางด้านขวามันจะไม่ทำงานและฉันไม่รู้ว่าทำไม มันควรจะทำงานโดยการเปลี่ยนเช่นนี้ แต่วิธีใด
ประการที่สองคุณจะไม่พบคุณสมบัติ UIViewControllerBasedStatusBarAppearance ในการวางแผนของคุณ แต่โดยค่าเริ่มต้นจะไม่มี คุณต้องเพิ่มมันด้วยตัวเองโดยคลิกที่ปุ่ม + จากนั้นตั้งเป็น NO
สีข้อความของแถบสถานะ ios 7
สุดท้ายคุณต้องไปที่ไฟล์ AppDelegate.m ของคุณและเพิ่มสิ่งต่อไปนี้ในวิธีการ didFinishLaunchingWithOptions ให้เพิ่มบรรทัดต่อไปนี้:
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
สิ่งนี้จะเปลี่ยนสีเป็นสีขาวสำหรับตัวควบคุมมุมมองทั้งหมดของคุณ หวังว่านี่จะช่วยได้!