Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- Xcode
- uitableview
- 애니메이션
- 리펙터링
- ios
- tableView
- swift documentation
- UICollectionView
- Protocol
- 클린 코드
- collectionview
- 스위프트
- map
- ribs
- 리펙토링
- Human interface guide
- Observable
- rxswift
- uiscrollview
- clean architecture
- swiftUI
- MVVM
- 리팩토링
- Refactoring
- SWIFT
- UITextView
- Clean Code
- HIG
- RxCocoa
- combine
Archives
- Today
- Total
김종권의 iOS 앱 개발 알아가기
[iOS - swift] statusBarManager 개념 (#'statusBarFrame' was deprecated in iOS 13.0: Use the statusBarManager property of the window scene instead.) 본문
iOS 응용 (swift)
[iOS - swift] statusBarManager 개념 (#'statusBarFrame' was deprecated in iOS 13.0: Use the statusBarManager property of the window scene instead.)
jake-kim 2023. 10. 20. 01:54statusBarManager 개념
- 기존에 statusBar의 heigth를 구하려고 하면, statusBarFrame 이라는 기존에 있던 프로퍼티가 iOS13에서 deprecated되었다는 경고 메시지가 노출
UIApplication.shared.statusBarFrame.height
- 애플은 iOS13+에서 statusBar에 대한 값을 관리하는 별도의 statusBarManager를 정의
- UIStatusBarManager는 class 타입
- 3가지의 프로퍼티가 존재
- 여기서 statusBarFrame을 사용하면 height구하기도 가능
- statusBarManager 사용법
- UIWindowScene의 instance이므로, UIWindowScnene인스턴스를 가져와서 획득
if let windowScene = UIApplication.shared.connectedScenes.first as? UIWindowScene,
let statusBarManager = windowScene.statusBarManager {
let height = statusBarManager.statusBarFrame.height
print(height)
}
- 기존 방식보다는 코드가 길어졌지만, statusBar를 전용으로 처리하며 이 인스턴스는 UIWindowScene안에서 가지고 있도록 애플이 변경한 것
// 이전 방식
let statusBarHeight = UIApplication.shared.statusBarFrame.height
// 새로운 방식
if let windowScene = UIApplication.shared.connectedScenes.first as? UIWindowScene,
let statusBarManager = windowScene.statusBarManager {
let height = statusBarManager.statusBarFrame.height
print(height)
}
UIApplication.shared.statusBarFrame이 deprecated되는 이유
- 애플은 UIWindowScene의 책임을 더 크게 하고 있는 추세
- 스크린 width를 구할 때, UIScreen.main.bounds를 쓰면 depreacted될 것이라고 경고 메시지를 주고 대신에 view.window?.windowScene?.screen.bounds.width를 쓰도록 유도 - 이전 포스팅 글 참고
* 참고
https://developer.apple.com/documentation/uikit/uistatusbarmanager
https://developer.apple.com/documentation/uikit/uiwindowscene/3213943-statusbarmanager
'iOS 응용 (swift)' 카테고리의 다른 글
Comments