스토리보드의 NavigationController UI Class에 INavigationViewController 입력하면 자동으로 변경됨.
import UIKit
class INavigationViewController: UINavigationController {
/*
ViewController 에서 재정의 할 경우 UINavigationController에 childForStatusBarStyle 및 preferredStatusBarStyle 재정의 해야 호출됨.
[UIViewController 에서 재정의 호출]
var barStyle = UIStatusBarStyle.lightContent
override var preferredStatusBarStyle: UIStatusBarStyle{
return barStyle
*/
override open var childForStatusBarStyle: UIViewController? {
return topViewController
}
open override var preferredStatusBarStyle: UIStatusBarStyle {
return visibleViewController?.preferredStatusBarStyle ?? .default
}
override func viewDidLoad() {
super.viewDidLoad()
if #available(iOS 13.0, *) {
let appearance = UINavigationBarAppearance()
appearance.configureWithOpaqueBackground()
appearance.backgroundColor = UIColor(red: 84.0 / 255.0, green: 199.0 / 255.0, blue: 217.0 / 255.0, alpha: 1.0)
appearance.titleTextAttributes = [NSAttributedString.Key.foregroundColor:UIColor.white]
navigationBar.tintColor = UIColor.white
navigationBar.standardAppearance = appearance
navigationBar.scrollEdgeAppearance = navigationBar.standardAppearance
} else {
// Fallback on earlier versions
navigationBar.tintColor = UIColor.white
navigationBar.barTintColor = UIColor(red: 84.0 / 255.0, green: 199.0 / 255.0, blue: 217.0 / 255.0, alpha: 1.0)
navigationBar.backgroundColor = UIColor(red: 84.0 / 255.0, green: 199.0 / 255.0, blue: 217.0 / 255.0, alpha: 1.0)
//isTranslucent를 false로 설정하지 않는다면 기본값은 반투명
navigationController?.navigationBar.isTranslucent = false
}
}
}
'Swift > UINavigationController' 카테고리의 다른 글
[SWIFT]UINavigationBar 추가 및 IOS 버전별 statusBarHeight 구하기 (0) | 2023.10.24 |
---|