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
반응형