iOS - Swift
[iOS/Swift] iOS13에서 keyWindow 경고 해결
개발자 수니
2023. 12. 22. 16:30
728x90
반응형
iOS13에서 가장 앞 쪽에 배치된 윈도우를 구하는 keyWindow가 deprecated 되었습니다.
'keyWindow' was deprecated in iOS 13.0: Should not be used for applications that support multiple scenes as it returns a key window across all connected scenes
📌 이번 글은
iOS 13에서 keyWindow 경고를 해결하는 Extension 소스입니다.
UIApplication+Exntension.swift
import UIKit
extension UIApplication {
/**
# keyWindowInConnectedScenes
- Note: iOS 13 keyWindow 경고 해결
*/
var keyWindowInConnectedScenes: UIWindow? {
if #available(iOS 13.0, *) {
return UIApplication.shared.windows.filter { $0.isKeyWindow }.first
} else {
return UIApplication.shared.keyWindow
}
}
}
keyWindow가 필요한 곳에 아래와 같이 호출하면 됩니다.
UIApplication.shared.keyWindowInConnectedScenes
👩🏻💻 사용 예제
현재 디바이스의 safeAreaTopInset 값을 반환하는 예제입니다.
/**
# safeAreaTopInset
- Note: 현재 디바이스의 safeAreaTopInset값 반환
*/
static func safeAreaTopInset() -> CGFloat {
if #available(iOS 11.0, *) {
let window = UIApplication.shared.keyWindowInConnectedScenes
let topPadding = window?.safeAreaInsets.top
return topPadding ?? Utils.STATUS_HEIGHT
} else {
return Utils.STATUS_HEIGHT
}
}
728x90
반응형