반응형
시작
iOS + 16부터 UIScreen.main는 더 이상 사용되지 않는다는 메시지가 뜨네요.
사용은 가능하지만 그래도 메시지가 거슬리니까,
UIScreen.main을 사용하는 대신, 다른 방법으로 Screen의 크기를 구하는 방법을 알아봅시다.
방법 1
공식문서에서 하라는 대로 따라해보기 (정석?!)
guard let screen = view.window?.windowScene?.screen else { return }
let screenSize = screen.bounds
방법 2
UIApplication를 통해 window 접근해서 사용하기!
guard let window = UIApplication.shared.connectedScenes.first as? UIWindowScene else { return }
let screenSize = window.screen.bounds
extension으로 만들어 사용
정말 자주 사용해야 한다면, 이렇게 사용해도 될 것 같네요.
extension UIViewController {
func screen() -> UIScreen? {
// 이 방법은 Life Cycle을 고려해서 사용해줘야 한다. (view가 생성된 후, 사용해 줘야 합니다)
// updateViewConstraints 또는 viewDidLayoutSubviews 이 정도 타이밍이 좋을 듯 싶다.
return view.window?.windowScene?.screen
}
}
방법1, 2을 합쳐서 사용하기
extension UIViewController {
func screen() -> UIScreen? {
guard let window = UIApplication.shared.connectedScenes.first as? UIWindowScene else {
// 99.9% 확률로 실패할 일은 없을 것 같은데, 만약 실패 한다면 view로 접근하여 사용하기 (1번 방법)
return view.window?.windowScene?.screen
}
// 2번 방법
return window.screen
}
}
반응형
'TIP' 카테고리의 다른 글
[Swift/ TIP] subscript 활용 (깔끔하게 모델에 접근) (2) | 2023.11.21 |
---|---|
[Swift/ TIP] 앱 이름 변경하기 (+Localization) (0) | 2023.07.21 |
[Swift/ TIP] 앱 추적 투명성 권한 요청 (App Tracking Transparency) (0) | 2023.07.21 |
[Swift/ TIP] Alert를 사용해, 앱 설정창으로 이동하기 (0) | 2023.07.21 |
[Swift/ Tip] 한 버튼에서 2가지 동작을 사용해보자 (0) | 2023.07.15 |