Cách cài đặt status bar style ở iOS 7 trở lên

Ha Nguyen Duc
Chim cu chăm code
Published in
1 min readJan 20, 2020
  1. Trường hợp setting status bar style của toàn app, không phụ thuộc vào từng view controller
  • Trong Info.plist thêm vào key: UIViewControllerBasedStatusBarAppearance với giá trị là NO
  • Project Settings/General: Chọn kiểu cho Status Bar Style.
  • Có 3 kiểu:
  • Default: Phụ thuộc vào UserInterfaceStyle là dark hay light thì màu của status bar sẽ thay đổi tương ứng là trắng hoặc đen
  • Light Content: Màu của status bar luôn là trắng
  • Dark Content: Màu của status bar luôn là đen (từ iOS 13 trở lên mới có loại này)

2. Trường hợp setting status bar style phụ thuộc vào từng view controller

  • Trong Info.plist thêm vào key: UIViewControllerBasedStatusBarAppearance với giá trị là YES
  • Thêm vào view controller muốn thay đổi status bar style:
override var preferredStatusBarStyle: UIStatusBarStyle {
return // Trả về status bar style
}
  • Nếu view controller nằm trong navigation controller thì phải cài đặt cho UINavigationController như sau:
extension UINavigationController {
open override var preferredStatusBarStyle: UIStatusBarStyle {
return topViewController?.preferredStatusBarStyle ?? .default
}
}
  • Nếu muốn thay đổi cho view controller đang được present thì phải present với modalPresentationStylefullScreen:
controller.modalPresentationStyle = .fullScreen

Nếu không dùng kiểu fullScreen thì sẽ lấy status bar style của presenting view controller

  • Trường hợp preferredStatusBarStyle không nhận thì xem view controller hiện tại hoặc UINavigationController hiện tại có phải là rootViewController của window không, nếu không thì cần set nó là rootViewController

--

--