Cách thay đổi màu văn bản Status Bar trong iOS


990

Ứng dụng của tôi có nền tối, nhưng trong iOS 7, thanh trạng thái trở nên trong suốt. Vì vậy, tôi không thể thấy bất cứ điều gì ở đó, chỉ có đèn báo pin màu xanh ở góc. Làm cách nào để thay đổi màu văn bản trên thanh trạng thái thành màu trắng như trên màn hình chính?


9
Liên kết này có thông tin thú vị về vấn đề này: doubleencore.com/2013/09/ Khăn
Adriano Lucas

Câu trả lời:


1380
  1. Đặt UIViewControllerBasedStatusBarAppearancethành YEStrong tệp .plist.

  2. Trong viewDidLoadmột[self setNeedsStatusBarAppearanceUpdate];

  3. Thêm phương pháp sau:

    - (UIStatusBarStyle)preferredStatusBarStyle
    { 
        return UIStatusBarStyleLightContent; 
    }

Lưu ý : Điều này không hoạt động cho các bộ điều khiển bên trong UINavigationController, vui lòng xem bình luận của Tyson bên dưới :)

Swift 3 - Điều này sẽ làm việc bộ điều khiển bên trong UINavigationController. Thêm mã này trong bộ điều khiển của bạn.

// Preferred status bar style lightContent to use on dark background.
// Swift 3
override var preferredStatusBarStyle: UIStatusBarStyle {
    return .lightContent
}

Swift 5 và SwiftUI

Đối với SwiftUI, tạo một tệp nhanh chóng được gọi là HostingController.swift

import Foundation
import UIKit
import SwiftUI

class HostingController: UIHostingController<ContentView> {
    override var preferredStatusBarStyle: UIStatusBarStyle {
        return .lightContent
    }
}

Sau đó thay đổi các dòng mã sau trong SceneDelegate.swift

window.rootViewController = UIHostingController(rootView: ContentView())

đến

window.rootViewController = HostingController(rootView: ContentView())

78
Tôi không cần Bước 2.
Jason Moore

37
Dường như không hoạt động trên iOS 7 Beta 5 với Xcode5-DP5. preferStatusBarStyle dường như không được gọi.
wilsontgh

18
UIViewControllBasingStatusBarAppparent được thay đổi thành Xem sự xuất hiện của thanh trạng thái dựa trên bộ điều khiển trong hạt giống Xcode 5 GM
parilogic

42
Nhận được câu trả lời cho Xcode GM Seed: 1. Trong Info.plist đặt giao diện thanh trạng thái dựa trên bộ điều khiển là NO 2. Trong appDelegate, bên trong phương thức appDidFinishLaunching, đặt [[giao diện UIView] setTintColor: [UIColor whiteColor]];
parilogic

101
UINavestionControll là một trường hợp đặc biệt, ở trên sẽ không hoạt động. Chỉ cần dành hàng giờ gãi đầu của tôi về điều này. Xem tại đây để biết giải pháp: stackoverflow.com/a/19513714/505457
Tyson

848

Ngoài ra, bạn có thể chọn không xuất hiện trên thanh trạng thái dựa trên trình điều khiển chế độ xem:

  1. Đặt View controller-based status bar appearancethành NOtrong của bạn Info.plist.
  2. Gọi [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

Lưu ý: Phương pháp này đã không được chấp nhận trong iOS9. Sử dụng preferredStatusBarStyletrên UIViewControll thay thế. (xem Thư viện nhà phát triển của Apple )


16
Đây là một tuyến đường tốt hơn và dễ dàng hơn nhiều.
Mick Byrne

227
Không cần mã. Tất cả có thể được thực hiện từ phần chính: (1) đặt "Xem giao diện thanh trạng thái dựa trên bộ điều khiển" thành NO và (2) đặt "Kiểu thanh trạng thái" thành "Kiểu đen mờ". (Giá trị thô là UIViewControllBasingStatusBarAppparent -> NO và UIStatusBarStyle -> UIStatusBarStyleBlackOpaque)
SwiftArchitect

3
Lưu ý rằng bạn phải đặt giá trị thông tin có liên quan thành KHÔNG để làm việc này.
Abhi Beckert

9
@gothicdev: bắt đẹp. Sẽ chấp nhận câu trả lời của bạn vì nó là sạch nhất. Tùy chọn ánh sáng cho Phong cách Bar có thể là: UIStatusBarStyleLightContent
benka

9
Phương pháp này đã không được chấp nhận trong iOS 9.
mấtAtSeaJoshua

439

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 thanh văn bản màu trạng thái màu trắng trong toàn bộ ứng dụng

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

  • Kiểu thanh trạng thái: Transparent black style (alpha of 0.5)
  • Xem sự xuất hiện của 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

12
Tôi không biết nếu mọi thứ thay đổi, nhưng giá trị UIStatusBarStyleLightContent không được XCode nhận ra và không được tìm thấy trong bất kỳ tài liệu nào ... Mặc dù có vẻ như nó hoạt động.
Nathan H

5
Cái này cũng thay đổi nó trên màn hình giật gân, trong khi chỉ cần đặt nó trên bộ điều hướng sẽ không ... Kudos!
viniciusnz

3
Chắc chắn là cách dễ nhất để thực hiện điều này và như đã đề cập cũng hoạt động trên màn hình giật gân.
7wonders

4
Không có bất cứ thứ gì được gọi UIStatusBarStyleLightContenttrong plist infoTUY NHIÊN, đó là cách Transparent Blackthực hiện cùng một mẹo :) cộng với, bạn cần thêm View controller-based status bar appearancevào vì nó không có ở đó và đó là tất cả những gì bạn cần để làm cho nó hoạt động :)
user1949873

45
Đối với những người lười biếng như tôi, hãy sao chép và bỏ đi: <key>UIStatusBarStyle</key> <string>UIStatusBarStyleLightContent</string> <key>UIViewControllerBasedStatusBarAppearance</key> <false/>
Adam Waite

241

Lưu ý: Hầu hết câu trả lời được nâng cấp không hoạt động cho iOS 7/8

Trong Info.plist đặt 'Xem giao diện thanh trạng thái dựa trên bộ điều khiển' là NO

Trong AppDelegate thêm

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

đến

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

Giải pháp này hoạt động cho iOS 7/8


10
Không dùng nữa trong iOS 9 .: - /
sudo hãy cài đặt vào

112

Đối với tôi, không có gì xảy ra với việc sử dụng tất cả những điều trong các câu trả lời khác (và từ các nguồn / tài liệu khác). Điều đã giúp là đặt Kiểu thanh điều hướng thành "Đen" trong XIB. Điều này đã thay đổi văn bản thành màu trắng mà không có bất kỳ mã nào cả.

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


3
Trong thiết bị không có câu trả lời nào ở trên làm việc cho tôi trừ câu trả lời này. Tôi nghĩ rằng nó nói với mọi thứ về hệ thống mới mà bạn phải đặt navigation_bar thành BLACK để có văn bản status_bar TRẮNG.
MrTJ

2
Sau khi vật lộn qua rất nhiều thứ, đây là những gì đã kết thúc công việc. Kiểu được đặt thành mặc định. Thay đổi điều này và loại bỏ tất cả các hack thanh trạng thái khác và nó hoạt động.
Gujamin 17/11/13

1
Nếu bạn không muốn đặt tất cả các thanh điều hướng của mình trong IB, bạn cũng có thể đặt proxy xuất hiện của nó. [[Xuất hiện UINavestionBar] setBarStyle: UIBarStyleBlack];
Steve Moser

3
Không hoạt động với tôi trong Storyboard iOS7. Có vẻ như đây có thể là một tác dụng phụ os gì khác?
Chris

Tôi muốn xác nhận rằng, tất cả các câu trả lời trên cũng không có tác dụng với tôi. Theo hình ảnh, văn bản thanh trạng thái trông màu trắng. Nhưng tôi nhắc lại một lần nữa, ANSWERS ở trên với Xcode 6.2 và iOS 8.2 không hoạt động.
Markus

98

Không ai trong số đó làm việc cho tôi, vì vậy đây là một giải pháp hiệu quả ...

Trong Info.plist, thêm một hàng:

UIViewControllerBasedStatusBarAppearancevà đặt giá trị NO.

Sau đó, trong AppDelegate didFinishLaunchingWithOptions, thêm các hàng sau:

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

Giải pháp này hiệu quả với tôi trong khi những người ở trên thì không.
John Contarino

Tuyệt vời nhưng UIViewControllBasingStatusBarAppparent này chuyển đổi thành giống nhau: Xem tự động xuất hiện thanh trạng thái dựa trên bộ điều khiển :)
Abhishek Thapliyal

63

Bạn không cần phải làm bất kỳ mã nào cho việc này

Bạn cần thêm khóa "Xem giao diện thanh trạng thái dựa trên bộ điều khiển" trong info.plist như sau: nhập mô tả hình ảnh ở đây

& đặt loại giá trị của nó thành Boolean & value thành NO. Sau đó nhấp vào cài đặt dự án, sau đó nhấp vào Tab Chung & bên dưới Thông tin triển khai đặt kiểu thanh trạng thái ưa thích thành .Light như sau:

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

Đó là nó.


1
Tôi thích cách tiếp cận của bạn! Trong trường hợp của tôi, tôi đã cố gắng tìm ra cách làm cho kiểu thanh trạng thái trở nên sáng chỉ khi nó ở chế độ toàn màn hình (thanh điều hướng w / o). Sau đó, tôi nhận ra rằng tất cả các màn hình khác phải phù hợp với cùng một kiểu ánh sáng. Vì vậy, một giải pháp tốt là thiết lập cho toàn bộ. Cảm ơn! (:
Igor de Lorenzi

Nếu bạn không cần thay đổi điều này bao giờ trong khi ứng dụng của bạn đang chạy. Đây là cách tiếp cận tốt nhất.
Michael

Cách tiếp cận này chắc chắn hoạt động nhưng nó giới thiệu một vấn đề lạ trên iPad. Trong trường hợp ứng dụng của bạn hỗ trợ các liên kết sâu và khi bạn khởi chạy ứng dụng thông qua liên kết sâu, liên kết ngược xuất hiện trên thanh trạng thái sẽ biến mất.
Chitranshu Asthana

Tốt nhất và đơn giản nhất.
Amit Kumar

giải pháp tốt nhất cho tôi: D
Gà vàng

48

Chỉ cần hai bước như sau:

Bước 1:

Trong tab Thông tin của project target, Thêm hàng:

UIViewControllerBasedStatusBarAppearance, đặt giá trị NO.

Bước 2:

Trong dự án AppDelegate.m:

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

4
Tôi thích câu trả lời này vì đây là lần đầu tiên tôi sử dụng thông số "ứng dụng")
MUH Mobile Inc.

Ký hiệu chấm và nó sẽ hoàn hảo;)
Rivera

43

Điều này hoạt động trong Golden Master iOS 7 và Xcode 5 GM seed và iOS7 SDK được phát hành vào ngày 18 tháng 9 năm 2013 (ít nhất là với bộ điều khiển điều hướng bị ẩn):

  1. Đặt the UIViewControllerBasedStatusBarAppearancethành NOtrong Info.plist.

  2. Trong ViewDidLoadphương thức hoặc bất cứ nơi nào, nơi bạn muốn thay đổi kiểu thanh trạng thái: [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];


1
Các giá trị mặc định của UIViewControllBasingStatusBarAppeld dường như là CÓ. "Ứng dụng mặc định sử dụng hệ thống quản lý thanh trạng thái dựa trên bộ điều khiển chế độ xem mới. Để từ chối điều này, hãy thêm giá trị NO cho khóa UIViewControllBasingStatusBarAppparent cho Info.plist của bạn." [ bgr.com/2013/09/10/ios-7-gm-change-log-release-notes/]
Zsolt

1
Ya !! Sau khi đặt UIViewControllBasingStatusBarAppparent thành NO, thanh trạng thái ẩn trong chế độ xem.
CashLee

nó có nên được áp dụng cho tất cả viewdidload không?
Arnlee Vizcayno

Bạn có thể thêm nó chỉ trong phương thức appDelegates didFinishLoading. Hoặc trong chế độ xem đầu tiên, phương thức viewDidLoad nếu bạn không muốn nó thay đổi.
Deniss Fedotovs

1
thật tuyệt vời, cái này đã làm công việc mã hóa đơn giản và tuyệt vời.
Felipe

32

Trong trường hợp UIViewContoder của bạn nằm trong UINavestionContaptor, bạn sẽ phải đặt BarStyle:

-[UINavigationBar setBarStyle:UIBarStyleBlack]

Câu trả lời gốc ở đây

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


Không, điều này chỉ đơn giản là làm cho màu của thanh điều hướng giống với màu văn bản của thanh trạng thái. Điều này che giấu vấn đề, không sửa chữa nó!
wpearse

2
Trong iOS7, thanh trạng thái sẽ bắt chước UINavestionBar nếu chế độ xem chứa UINavestionControll, do đó, trong nhiều trường hợp, đây là câu trả lời đúng.
jonstaff

29

Nếu bạn có bộ điều khiển nhúng được tạo thông qua Trình tạo giao diện , hãy đảm bảo đặt các mục sau trong một lớp quản lý bộ điều khiển điều hướng của bạn:

-(UIStatusBarStyle)preferredStatusBarStyle{ 
    return UIStatusBarStyleLightContent; 
} 

Đó nên là tất cả những gì bạn cần.


Đây là giải pháp duy nhất hiệu quả với tôi trong một ứng dụng không có cốt truyện và không có xib. Nên hữu ích cho người dùng không phải IB.
Johnny Sparks

2
Điều này là hoàn hảo đối với tôi khi tôi cần đặt kiểu khác nhau trong mỗi bộ điều khiển chế độ xem
Ben

Nếu bạn muốn giữ lại "Xem giao diện thanh trạng thái dựa trên bộ điều khiển" được đặt thành có, đây là cách để đi. Cảm ơn!
cloudurfin

28

Tôi đang sử dụng Xcode 6 beta 5 trên một dự án Swift , cho một ứng dụng iOS 7.

Đây là những gì tôi đã làm, và nó hoạt động:

thông tin.plist:

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


2
Cảm ơn, có vẻ như chỉ có giải pháp của bạn hoạt động với phiên bản mới nhất của IOS7
Dekel Maman

Giải pháp này hiển thị thanh trạng thái trong khi tải ứng dụng, trong màn hình khởi chạy.
Juan Boero

Đã giải quyết các vấn đề của tôi trong xCode 7.1. Phiên bản mới nhất. Apple đã quên một vài phần quan trọng để làm cho một cái gì đó hoạt động. Lần nữa.
Michael

22

Trong AppDelegate.m, thêm phần sau.

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

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

} 

Và trong tệp Plist, đặt 'Xem giao diện thanh trạng thái dựa trên bộ điều khiển' thành NO.


20

Đơn giản là trong Appdelegate

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

5
Câu trả lời duy nhất và duy nhất thực sự có hiệu quả với tôi.
Wim Haanstra

6
Nhưng để làm điều này, chúng ta cần phải chọn không xuất hiện thanh trạng thái dựa trên bộ điều khiển .
iamyogish

Không dùng nữa trong iOS9
Dimitris

20

Vâng, điều này thực sự làm việc như một miếng bánh cho tôi.

Chuyển đến ứng dụng của bạn info.plist.

  1. Đặt View controller-based status bar appearancethànhNO
  2. Đặt Status bar stylethànhUIStatusBarStyleLightContent

Sau đó, đi đến đại biểu của ứng dụng của bạn và dán mã sau đây nơi bạn đặt RootViewControll của 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];
}

Chơi lô tô. Nó làm việc cho tôi.


1
Tôi nghĩ rằng đây là câu trả lời đúng (một phần của số nguyên) ... tại sao tôi lại thêm mã tĩnh vào didfinishlaunchingwithoptions ... Nếu bạn cần cùng màu cho toàn bộ ứng dụng thì đây là cách phù hợp
user2387149

20
  1. Chuyển đến Project-> Target,

  2. Sau đó đặt Status Bar Stylethành Light. Nó làm cho thanh trạng thái màu trắng từ màn hình khởi chạy. Thiết lập dự án

  3. Sau đó thiết lập View controller-based status bar appearancebằng NOtrong Info.plist.


2
Phần thứ hai, nơi bạn thiết lập các thực tế View controller-based status bar appearance equalđể NOlà mảnh Tôi đã mất tích. Cảm ơn
Will

18

Thay đổi thông tin PLIST Trong Swift 3 rất dễ dàng chỉ với 2 bước. Truy cập thông tin của bạn.plist và thay đổi khóa View controller-based status bar appearancethành "KHÔNG". Sau đó, trong Appdelegate chỉ cần thêm dòng này vào phương thức didfinishlaunchingwithoptions

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

điều này đã bị phản đối trong iOS9, bây giờ bạn nên ghi đè lên thuộc tính này trong trình điều khiển rootview

làm điều này đã bị phản đối trong iOS 9 nên làm điều này trên bộ điều khiển rootview

override var preferredStatusBarStyle: UIStatusBarStyle {
        return .lightContent
 }

1
Nó chỉ là người anh em tuyệt vời :) Cảm ơn.
Naresh Reddy M

làm điều này đã bị phản đối trong iOS 9 nên thực hiện điều này trên bộ điều khiển rootview ghi đè var preferStatusBarStyle: UIStatusBarStyle {return .lightContent}
James Rochabrun

17

iOS 7 cho phép các bộ điều khiển xem riêng lẻ xác định sự xuất hiện của thanh trạng thái, như được mô tả bởi tài liệu dành cho nhà phát triển của Apple:

iOS 7 cung cấp cho bộ điều khiển chế độ xem khả năng điều chỉnh kiểu của thanh trạng thái trong khi ứng dụng đang chạy. Một cách tốt để thay đổi phong cách thanh trạng thái một cách linh hoạt là triển khai preferredStatusBarStylevà trong một khối hoạt hình, cập nhật giao diện và cuộc gọi trên thanh trạng thái setNeedsStatusBarAppearanceUpdate.

Đặt giao diện thanh trạng thái trên toàn cầu là một quá trình gồm hai bước.

Trước tiên, bạn cần nói với iOS rằng bạn không muốn đặt giao diện thanh trạng thái trên cơ sở từng chế độ xem.

Sau đó, bạn cần phải chịu trách nhiệm và thực sự thiết lập kiểu thanh trạng thái toàn cầu mới.

Để tắt điều khiển thanh trạng thái xem theo chế độ xem, bạn sẽ cần đặt thuộc View controller-based status bar appearancetính trongInfo.plist .

Mở Project Navigator và chọn dự án cho ứng dụng iOS của bạn, sau đó chọn tab Thông tin.

Di chuột qua một hàng, sau đó nhấp vào dấu cộng xuất hiện để thêm thuộc tính mới vào .plist .

Nhập View controller-based status bar appearancevào trường Khóa, sau đó đảm bảo trường Loại được đặt thành Boolean. Cuối cùng, nhậpNO vào trường Giá trị.

Để đặt kiểu toàn cục cho thanh trạng thái, hãy thêm một thuộc tính khác trong tab Thông tin với khóa Status bar style, Loại Stringvà Giá trị Opaque black style.

Đây là một bài đăng blog với một chút chi tiết và một số mã mẫu:

http: // codeb ngủ.com / sding-the-status-bar-text-color-in-ios-7 /


Cảm ơn. Vấn đề của tôi là tôi đã không thấy rằng loại "Xem giao diện thanh trạng thái dựa trên bộ điều khiển" đã được đặt thành Chuỗi. Chỉnh sửa tệp .plist "bằng tay" và đưa vào giá trị boolean xóa mọi thứ.
Hoàng tử Chris

12

Không cần làm thêm, chỉ cần viết mã này trong viewContoder của bạn và lấy màu thanh trạng thái màu trắng

- (UIStatusBarStyle)preferredStatusBarStyle{return UIStatusBarStyleLightContent;}

Đặt cái này dưới ViewControll.m sau khi thực hiện. Nó dễ nhất và hoạt động tuyệt vời! Cảm ơn Mohit!
Phil Mulkins

12

Câu trả lời được cập nhật cho Xcode GM Seed:

  1. Trong Info.plistđặt View controller-based status bar appearancenhưNO

  2. Trong dự án, thiết lập:

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

  3. Trong ViewDidLoad:

    [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];


Điều đó đã thay đổi thanh tab, không phải thanh trạng thái cho tôi.
Keith

11

Tôi nghĩ rằng tất cả các câu trả lời không thực sự chỉ ra vấn đề bởi vì tất cả chúng đều hoạt động trong các tình huống cụ thể. Nhưng nếu bạn cần bao gồm tất cả các trường hợp, hãy làm theo các điểm dưới đây:

Tùy thuộc vào nơi bạn cần phong cách ánh sáng thanh trạng thái, bạn nên luôn luôn ghi nhớ 3 điểm sau:

1) Nếu bạn cần thanh trạng thái ở màn hình khởi chạy hoặc ở những nơi khác, nơi bạn không thể điều khiển nó (không phải trong bộ điều khiển xem, mà là một số yếu tố / khoảnh khắc do hệ thống kiểm soát như Màn hình khởi chạy) Bạn đi đến cài đặt dự án của bạn Thiết lập dự án

2) nếu bạn có bộ điều khiển bên trong bộ điều khiển điều hướng Bạn có thể thay đổi nó trong trình tạo giao diện như sau:

a) Chọn thanh điều hướng của bộ điều khiển điều hướng của bạn Chọn thanh điều hướng của bộ điều khiển điều hướng của bạn

b) Sau đó, đặt kiểu của thanh điều hướng thành "Đen", vì điều này có nghĩa là bạn sẽ có "đen" -> nền tối dưới thanh trạng thái của mình, vì vậy nó sẽ đặt thanh trạng thái thành màu trắng

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

Hoặc làm nó trong mã như sau

navigationController?.navigationBar.barStyle = UIBarStyle.Black

3) Nếu bạn có bộ điều khiển một mình cần có kiểu thanh trạng thái riêng và nó không được nhúng trong một số cấu trúc bộ chứa dưới dạng UINavestionControll

Đặt kiểu thanh trạng thái trong mã cho bộ điều khiển:

Đặt kiểu thanh trạng thái trong mã


vui lòng giải thích trường hợp của bạn và tôi sẽ cố gắng giúp đỡ
Fawkes

1
Tôi đã phải thêm StatusBarIsIntivelyHidden = NO cho plist cũng như ViewControllBasingApplicationStatusBarAppearnce = NO cho plist. Sau đó, phần này hoạt động bằng cách sử dụng phần một
Michael

Bạn đã có một màn hình giật gân có "hình ảnh" giống như trình điều khiển xem tải đầu tiên chưa? Ngoài ra, trong phần "Thông tin" của mục tiêu, bạn có thể thử đặt "Ẩn thanh trạng thái" thành sai và tránh giao dịch với .plist của bạn. Cờ "StatusBarIsIntivelyHidden"
Fawkes

Tôi không. Nó đang sử dụng xib mặc định được tạo.
Michael

Tôi thực sự đã tìm thấy vấn đề này khi tạo một dự án mới trong xCode 7.1, đó là lý do tại sao tôi nghĩ nó rất kỳ lạ
Michael

10

Đơn giản chỉ cần gọi

[[UINavigationBar appearance] setBarStyle:UIBarStyleBlack];

bên trong

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

phương pháp AppDelegatehoạt động tuyệt vời của tôi trong iOS7.


Wow, rất nhiều tào lao ở đây nhưng câu trả lời này đã làm việc cho tôi. Tôi đang sử dụng SDK Xcode 6 và iOS 8
Ethan Parker

1
Tuyệt vời, hoạt động với tôi trong iOS 9 vớiView controller-based status bar appearance = NO
dstudeba

9

Điều này được ghi lại trong Hướng dẫn chuyển đổi giao diện người dùng iOS 7 , bạn cần có ID nhà phát triển của Apple để truy cập trực tiếp. Đoạn trích liên quan:

Bởi vì thanh trạng thái là trong suốt, chế độ xem phía sau hiển thị thông qua. [...] Sử dụng UIStatusBarStylehằng số để xác định xem nội dung trên thanh trạng thái nên tối hay sáng:

UIStatusBarStyleDefaulthiển thị nội dung tối. [...]

UIStatusBarStyleLightContenthiển thị nội dung ánh sáng. Sử dụng khi nội dung tối phía sau thanh trạng thái.

Cũng có thể quan tâm:

Trong iOS 7, bạn có thể điều khiển kiểu của thanh trạng thái từ một bộ điều khiển vew riêng lẻ và thay đổi nó trong khi ứng dụng chạy. Để chọn tham gia vào hành vi này, hãy thêm UIViewControllerBasedStatusBarAppearancekhóa vào Info.plisttệp của ứng dụng và cung cấp cho nó giá trị YES.

Tôi chắc chắn khuyên bạn nên xem qua tài liệu, một lần nữa, bạn có thể truy cập bằng ID nhà phát triển Apple của mình.


3
Tôi đã thử [ứng dụng setStatusBarStyle: UIStatusBarStyleLightContent]; nhưng thực tế không có gì thay đổi, màu văn bản vẫn là màu đen
Oleksandr Veremchuk 16/07/13

Tôi muốn được giúp đỡ nhiều hơn, nhưng như tôi nói, tôi không đủ quen thuộc với quy trình phát triển iOS để biết những gì cần đề xuất. Lấy làm tiếc!
Aaron Miller

1) đặt UIViewControllBasingStatusBarAppurdy thành CÓ trong phần 2) trong viewDidLoad thực hiện [self setNeedStatusBarAppparentUpdate]; 3) thêm phương thức sau :-( UIStatusBarStyle) preferStatusBarStyle {return UIStatusBarStyleLightContent; }
Peter B. Kramer

9

Dưới đây là Hướng dẫn / Hướng dẫn của Apple về thay đổi thanh trạng thái. Chỉ cho phép Dark & ​​light (while & black) trên 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, mức ứng dụng thì được đặ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, ở mức điều khiển xem, hãy làm theo các bước sau:

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

  3. ghi đè ưa thíchStatusBarStyle trong trình điều khiển 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


Dưới đây là một số mẹo nhỏ để thay đổi / đặt màu nền cho thanh trạng thái trong khi khởi chạy ứng dụng hoặc trong khi viewDidLoad của trình điều khiển 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


8

Tôi đã làm một số điều khác nhau và nó làm việc cho tôi.

Không có thay đổi trong mã, tôi đã cấu hình tệp .plist của mình như thế này:

  • Xem sự xuất hiện của thanh trạng thái dựa trên bộ điều khiển> KHÔNG
  • Kiểu thanh trạng thái> UIStatusBarStyleLightContent (chuỗi đơn giản)

Tôi hy vọng nó sẽ giúp.

biên tập

Đối với mỗi bộ điều khiển chế độ xem, tôi thay đổi thuộc tính Số liệu mô phỏng của "thanh trạng thái", trong bảng phân cảnh, từ "suy ra" thành "Nội dung ánh sáng"


8

Nếu bạn muốn có kết quả tương tự với Swift, bạn có thể sử dụng mã này trong tệp AppDelegate.swift của mình:

UINavigationBar.appearance().barStyle = .BlackTranslucent

Và văn bản của thanh trạng thái của bạn sẽ có màu trắng :-)!


8

Nếu bạn vẫn muốn sử dụng View controller-based status bar appearancetrong info.plist được đặt thành CÓ, nghĩa là bạn có thể thay đổi thanh trạng thái cho từng trình điều khiển chế độ xem, hãy sử dụng cách sau cho văn bản màu trắng trong thanh trạng thái trong ViewDidLoad:

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

Thanh điều hướng! = Thanh trạng thái.
Michael Peterson

... Bạn đã thử à!? (Và vâng, đối với thanh trạng thái)
eirik 13/03/2015

7

Trong Plist, thêm phần này:

  • Kiểu thanh trạng thái: UIStatusBarStyleLightContent
  • Xem sự xuất hiện của thanh trạng thái dựa trên bộ điều khiển: NO

7

trong info.plist đặt giá trị trường KHÔNG Xem giao diện thanh trạng thái dựa trên bộ điều khiển và đặt đèn kiểu thanh trạng thái trong mục tiêu> cài đặt chung.


2
người chiến thắng bữa tối gà
tommybananas

7

Hãy để tôi cung cấp cho bạn một câu trả lời đầy đủ cho câu hỏi của bạn. Thay đổi màu văn bản trên thanh trạng thái rất dễ dàng nhưng hơi khó hiểu trong iOS 7 đặc biệt dành cho người mới.

Nếu bạn đang cố gắng thay đổi màu từ đen sang trắng trong Storyboard bằng cách chọn trình điều khiển chế độ xem và đi đến Mô phỏng số liệu ở phía bên phải, nó sẽ không hoạt động và tôi không biết tại sao. Nó nên hoạt động bằng cách thay đổi như thế này nhưng bất kỳ làm thế nào.

Thứ hai, bạn sẽ không tìm thấy thuộc tính UIViewControllBasingStatusBarAppparent trong danh sách của bạn nhưng theo mặc định nó không có ở đó. Bạn phải tự thêm nó bằng cách nhấp vào nút + và sau đó đặt thành KHÔNG.

ios 7 màu văn bản thanh trạng thái

Cuối cùng, bạn phải truy cập tệp AppDelegate.m của mình và thêm phần sau vào phương thức didFinishLaunchingWithOptions, thêm dòng sau:

     [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

Điều này sẽ thay đổi màu thành màu trắng cho tất cả các bộ điều khiển xem của bạn. Hi vọng điêu nay co ich!


Phương pháp này không được dùng nữa trên iOS 9
Trung Bùi
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.