- SceneDelegate
class SceneDelegate: UIResponder, UIWindowSceneDelegate {
var window: UIWindow?
var statusBarView = UIView()
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options
connectionOptions: UIScene.ConnectionOptions) {
//스테이터스바 크기 가져옴
statusBarView.frame = window?.windowScene?.statusBarManager?.statusBarFrame ?? .zero
}
}
- extension: SceneDelegate는 여러 뷰컨트롤러에서 사용하기 때문에 extension으로 어디서든지 접근할 수 있게 하는게 편하다고 합니다
extension UIViewController {
var statusBar: UIView? {
//status bar design scene는 싱글톤 느낌으로 같이 사용가능
//scenedelegate 접근
let sceneDelegate = UIApplication.shared.connectedScenes.first?.delegate as? SceneDelegate
let window = UIApplication.shared.windows.filter{$0.isKeyWindow}.first
//윈도우에 올리면 다른 뷰컨트롤러에 가도 설정되어 있음
//한번만 해주면 됨
if let hasStatusBar = sceneDelegate?.statusBarView {
window?.addSubview(hasStatusBar)
// self.view.addSubview(hasStatusBar)
}
return sceneDelegate?.statusBarView
}
}
DetailViewController
class DetailViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
self.navigationController?.navigationBar.backgroundColor = .yellow
self.statusBar?.backgroundColor = .yellow
}
}
- 이렇게 safeArea 위쪽으로 접근을 할 수 있습니다
'앱 > iOS(Swift)' 카테고리의 다른 글
[Swift] navigationBar 버튼 커스텀하기 (0) | 2022.01.13 |
---|---|
[Swift] ViewController 가져오는법 (0) | 2022.01.13 |
[Swift] 앱에서 갤러리 띄우기 (0) | 2022.01.13 |
[Swift] CoreData CRUD (0) | 2022.01.13 |
[Swift] 데이터 ViewController간 넘겨주는방법 (0) | 2022.01.13 |
댓글