Thay đổi màu văn bản của thanh trạng thái trong màn hình giật gân iOS 7


98

Tôi biết rằng đã có một số stackoverflow câu hỏi mà nói như thế nào để thay đổi thanh trạng thái cho tất cả các bộ điều khiển xem. Tôi hiện đang thay đổi màu của thanh trạng thái theo cách này:

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

bên trong application:DidFinishLaunching

Ngoài ra, tôi đã thay đổi giá trị của UIViewControllerBasedStatusBarAppearanceplist thành NO. Tuy nhiên, trong màn hình hiển thị, nó vẫn hiển thị văn bản trên thanh trạng thái với màu đen.

Có thể thay đổi màu của màu văn bản thanh trạng thái trong màn hình giật gân không?


Ý bạn là gì 'nó vẫn hiển thị thanh trạng thái với màu đen': Nếu mã của bạn hoạt động, phông chữ trên thanh trạng thái phải là màu trắng, màu nền của thanh trạng thái phụ thuộc vào hình ảnh giật gân của bạn (bây giờ sẽ bao gồm chiều cao thanh trạng thái - 20 pixel)
Vinzzz

Xin lỗi, tôi thực sự bỏ lỡ từ văn bản. Tôi chỉ thay đổi màu văn bản của thanh trạng thái. Tôi có thể thay đổi nó sau khi màn hình giật gân xảy ra nhưng tôi không thể thay đổi nó khi màn hình giật gân đang diễn ra.
Tiago Almeida

Câu trả lời:


224

Trong tệp danh sách dự án, hãy thêm thuộc tính "Kiểu thanh trạng thái" (khóa là UIStatusBarStyle). Sau đó, bỏ qua tất cả các giá trị có thể được liệt kê trong menu thả xuống cho thuộc tính này và UIStatusBarStyleLightContentthay vào đó nhập .

Và bạn không cần phải thiết lập UIViewControllerBasedStatusBarAppearanceđể NOtrong plist của bạn, bạn có thể đặt preferredStatusBarStylebạn muốn điều khiển tầm nhìn của bạn.


Có cách nào để làm cho điều này tương thích với thanh trạng thái được tô màu trên iOS 6 không?
Rafael Nobre

1
Màu văn bản của thanh trạng thái là trắng hoặc đen. Nền của thanh đến từ hình ảnh khởi chạy của bạn, sau đó từ chế độ xem của viewController nếu nó kéo dài bên dưới các thanh.
Vinzzz 28/10/13

1
Sau HÀNG TẤN các phương pháp khác nhau, phương pháp này CUỐI CÙNG đã hoạt động (với UIViewControllerBasedStatusBarAppearance được đặt thành KHÔNG). Bạn là một anh hùng.
Tamás Sengel

bạn cũng có thể làm điều này thông qua mã UIApplication.sharedApplication (). statusBarStyle = .LightContent. Tôi làm điều đó trong AppDelegate
Yasmin Tiomkin

@Yasmin: để thay đổi màu SAU màn hình giật gân, giải pháp này đã là một phần của câu hỏi;)
Vinzzz

33

Bạn có thể làm điều này mà không cần viết bất kỳ dòng mã nào
Thực hiện như sau để làm cho màu văn bản trên thanh trạng thái là màu trắng trong toàn bộ ứng dụng

Trên tệp plist dự án của bạn :

  • Kiểu thanh trạng thái: UIStatusBarStyleLightContent
  • Xem giao diện thanh trạng thái dựa trên bộ điều khiển: NO
  • Thanh trạng thái ban đầu bị ẩn: NO

Câu trả lời được chấp nhận là tốt, nhưng nó không hoạt động trên tất cả các bộ điều khiển chế độ xem của tôi nếu không thực hiện dấu đầu dòng thứ 2 ở trên. Cảm ơn!
Clifton Labrum

"Xem bộ điều khiển dựa trên thanh trạng thái xuất hiện: YES" vẫn dường như làm các trick (iOS 9)
Nicolas Miari

19

Bạn có thể làm những việc sau để nhận được thanh trạng thái màu sáng trong toàn bộ ứng dụng.

  1. Chọn tên của dự án trong trình điều hướng dự án.
  2. Chọn tên mục tiêu từ danh sách ở cột bên trái của trình chỉnh sửa dự án.
  3. Nhấp vào Chung ở đầu trình chỉnh sửa dự án.
  4. Đặt Kiểu thanh trạng thái -> Ánh sáng

Trong tệp plist của bạn, hãy thêm các giá trị sau:

  1. Kiểu thanh trạng thái - UIStatusBarStyleLightContent
  2. Xem giao diện thanh trạng thái dựa trên bộ điều khiển - KHÔNG

Điều này sẽ giúp bạn nhận được thanh trạng thái có màu TRẮNG trong toàn bộ ứng dụng bao gồm cả SPLASH SCREEN.


7

Đặt UIViewControllerBasedStatusBarAppearancethành Không trong bảng xếp hạng

Sau đó thêm mã sau vào tùy chọn khởi chạy đã hoàn thành

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);
}

Vui lòng làm theo mã này, nó đã làm việc cho tôi


điều này đang hiển thị văn bản màu trắng trên thanh trạng thái trong khi nền của tôi cũng sáng. làm thế nào tôi có thể hiển thị màu đen văn bản
Mangesh

Mangesh trên Target đi đến các cài đặt chung đó bạn sẽ có một tùy chọn để thiết lập các thanh trạng thái phong cách
Preejith augustine

Bạn thực sự có thể viết dòng đầu tiên một chút cắn đơn giản sử dụng dấu chấm cú pháp, như thế này: if (UIDevice.currentDevice.systemVersion.floatValue >= 7) {
Todd Lehman

2

Đây là Nguyên tắc / Hướng dẫn của Apple về thay đổi thanh trạng thái.

Đây là - Cách thay đổi kiểu thanh trạng thái:

Nếu bạn muốn đặt kiểu thanh trạng thái, cấp ứng dụng thì hãy đặt UIViewControllerBasedStatusBarAppearancethành NOtrong tệp `.plist 'của bạn.

nếu bạn muốn đặt kiểu thanh trạng thái, ở cấp bộ điều khiển chế độ xem, hãy làm theo các bước sau:

  1. Đặt UIViewControllerBasedStatusBarAppearancethành YEStrong .plisttệp, nếu bạn chỉ cần đặt kiểu thanh trạng thái ở cấp UIViewController.
  2. Trong chức năng thêm viewDidLoad - setNeedsStatusBarAppearanceUpdate

  3. ghi đè ưu tiênStatusBarStyle trong bộ điều khiển chế độ xem của bạn.

-

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

override var preferredStatusBarStyle: UIStatusBarStyle {
    return .lightContent
}

Đặt giá trị của .plist theo mức thiết lập kiểu thanh trạng thái. nhập mô tả hình ảnh ở đây


Bạn có thể đặt màu nền cho thanh trạng thái trong khi khởi chạy ứng dụng hoặc trong khi xemDidLoad của bộ điều khiển chế độ xem của bạn.

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
    }

}



Đây là kết quả:

nhập mô tả hình ảnh ở đây


1

Bạn có thể làm những việc sau để nhận được thanh trạng thái màu sáng trong toàn bộ ứng dụng.

Chọn tên của dự án trong trình điều hướng dự án. Chọn tên mục tiêu từ danh sách ở cột bên trái của trình chỉnh sửa dự án. Nhấp vào Chung ở đầu trình chỉnh sửa dự án. Đặt Kiểu thanh trạng thái -> Ánh sáng

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.