2017-03-28 74 views
7

Tôi đang cố thay đổi màu của thanh trạng thái thành màu xanh dương hoặc một số màu khác.Thay đổi Màu của Thanh Trạng thái

Điều này có thể xảy ra hay Apple không cho phép điều đó?

+1

Dựa trên hai câu trả lời (có nhận xét), câu trả lời (như tôi nghĩ) là ** không **. Bạn có thể (1) thay đổi màu phông chữ của thanh trạng thái hoặc (2) sử dụng API riêng tư, nhưng bạn đang tận dụng cơ hội Apple từ chối ứng dụng của bạn (hoặc tệ hơn, từ chối nó ở đâu đó trên đường). – dfd

Trả lời

7

đầu tiên trong Plist thiết View controller-based status bar appearance để NO

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { 
    // Override point for customization after application launch. 

    let statusBar: UIView = UIApplication.shared.value(forKey: "statusBar") as! UIView 
    if statusBar.responds(to:#selector(setter: UIView.backgroundColor)) { 
     statusBar.backgroundColor = UIColor.blue 
    } 
    UIApplication.shared.statusBarStyle = .lightContent 

    return true 
} 

Sản lượng ảnh chụp màn hình dưới

enter image description here

+2

Điều này đang sử dụng API riêng tư, không có giấy tờ mà có thể không vượt qua đánh giá ứng dụng. Nó không bao giờ là một ý tưởng tốt để làm những việc như thế này. Nó có khả năng sụp đổ, đặc biệt là khi được viết, khi API riêng tư thay đổi trong một số bản cập nhật iOS trong tương lai. – rmaddy

+0

Tôi đã có một ứng dụng bị từ chối nguyên nhân của điều này, trong khi một ứng dụng khác được chấp nhận tốt. Họ xem xét nó sử dụng API tư nhân, vì vậy bạn có thể may mắn trong quá trình xem xét :) - @Sebyddd – byJeevan

+0

Tôi chắc chắn sẽ ** thêm ** thực tế này vào câu trả lời của bạn. – dfd

6

Không, nó không thể xảy ra với các API công cộng làm sẵn.

Nhưng với việc phát hành iOS 7, bạn được phép thay đổi giao diện của thanh trạng thái. Do đó tôi ở đây đăng cách giải quyết của tôi.

Từ một bộ điều khiển xem cá nhân bằng cách ghi đè các preferredStatusBarStyle:

-(UIStatusBarStyle)preferredStatusBarStyle 
{ 
    return UIStatusBarStyleLightContent; 
} 

Ngoài ra, bạn có thể thiết lập tình trạng phong cách thanh bằng cách sử dụng phương pháp UIApplication statusBarStyle. Để thực hiện việc này, hãy chèn một khóa mới có tên “Xem giao diện thanh trạng thái dựa trên bộ điều khiển” và đặt giá trị thành NO. enter image description here

Bằng cách tắt "Xem giao diện thanh trạng thái dựa trên bộ điều khiển", bạn có thể đặt kiểu thanh trạng thái bằng cách sử dụng mã sau.

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent]; 

Cuối cùng, thay đổi màu sắc thái UINavigationBar tài sản như dưới đây

[[UINavigationBar appearance] setBarTintColor:[UIColor blueColor]]; 
+0

Để làm rõ câu trả lời của bạn, hãy thay đổi thanh trạng thái ** màu nền ** thành màu ** ** cụ thể? – dfd

+0

Bản chỉnh sửa này không có ý nghĩa. OP muốn thay đổi thanh trạng thái, chứ không phải thanh điều hướng. – dfd

+0

Vui lòng tham khảo liên kết này http://www.appcoda.com/customize-navigation-status-bar-ios-7/ – byJeevan

3


Bạn có thể đặt màu nền cho thanh trạng thái trong suốt ra mắt ứng dụng hoặc trong viewDidLoad của bộ điều khiển tầm nhìn 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 
    } 

} 



Dưới đây là kết quả:

enter image description here

Đây là Apple Guidelines/Instruction về sự thay đổi thanh trạng thái. Chỉ tối thiểu & ánh sáng (trong khi & màu đen) được phép trong thanh trạng thái.

Đây là - Làm thế nào để thay đổi trạng thái thanh phong cách:

Nếu bạn muốn thiết lập tình trạng phong cách bar, mức độ ứng dụng sau đó thiết lập UIViewControllerBasedStatusBarAppearance-NO trong file `plist' của bạn.

nếu bạn wan để sửa status kiểu quầy bar, ở cấp chế độ điều khiển sau đó làm theo các bước sau:

  1. Đặt UIViewControllerBasedStatusBarAppearance-YES trong file .plist, nếu bạn cần phải thiết lập tình trạng phong cách thanh chỉ ở mức độ UIViewController .
  2. Trong viewDidLoad thêm chức năng - setNeedsStatusBarAppearanceUpdate

  3. override preferredStatusBarStyle trong điều khiển điểm của bạn.

-

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

override var preferredStatusBarStyle: UIStatusBarStyle { 
    return .lightContent 
} 

Set giá trị của plist theo tình trạng phong cách thanh mức thiết lập. enter image description here

2

Dưới đây là cách giải quyết của tôi: tạo UIView, thêm nó vào xem gốc lại xem điều khiển như tình trạng nhân tạo thanh nền
1.Create một UIView

// status bar's height is 20.0pt 
CGRect frame = CGRectMake(0.0, 0.0, [UIScreen mainScreen].bounds.size.width, 20.0); 
UIView *fakeStatusBarBG = [[UIView alloc] initWithFrame:frame]; 
fakeStatusBarBG.backgroundColor = [UIColor yourColor]; 

2.Add nó để chế độ xem gốc của trình điều khiển chế độ xem của bạn

// self is your view controller, make sure fakeStatusBarBG is the top subview in your view hierarchy 
[self.view insertSubview:fakeStatusBarBG aboveSubview:yourTopSubview]; 

Có của bạn.

3. (Bổ sung) Thay đổi màu nội dung trên thanh trạng thái, chỉ trắng hoặc đen.

- (UIStatusBarStyle)preferredStatusBarStyle 
{ 
    if (youWantWhiteColor) 
    { 
     return UIStatusBarStyleLightContent; 
    } 
    return UIStatusBarStyleDefault; 
} 

Cách giải quyết này không sử dụng API riêng tư, vì vậy bạn an toàn. :-)

Các vấn đề liên quan