일모도원(日暮途遠) 개발자

[iOS오류수정] 'windows' was deprecated in iOS 15.0: Use UIWindowScene.windows on a relevant window scene instead 본문

iOS개발/오류수정

[iOS오류수정] 'windows' was deprecated in iOS 15.0: Use UIWindowScene.windows on a relevant window scene instead

달님개발자 2023. 2. 23. 20:26

아래와 같은 경고가 보인다.

'windows' was deprecated in iOS 15.0: Use UIWindowScene.windows on a relevant window scene instead

 

원인은 이 코드이다.

return UIApplication.shared.windows.first?.windowScene?.interfaceOrientation.isLandscape ?? false

 

가로 모드인지 확인하는 코드를 아래처럼 가지고 있는데 이제 경고가 난다.

extension UIApplication {
    static var isLandscape: Bool {
        if AppConts.IS_MACOS {
            return true
        } else {
            if #available(iOS 13.0, *) {
                return UIApplication.shared.windows.first?.windowScene?.interfaceOrientation.isLandscape ?? false
            } else {
                return UIApplication.shared.statusBarOrientation.isLandscape
            }
        }
    }
}

 

 

다음처럼 하면 경고는 더이상 안나온다.

let scenes = UIApplication.shared.connectedScenes.first as? UIWindowScene
let windowFirst = scenes?.windows.first
return windowFirst?.windowScene?.interfaceOrientation.isLandscape ?? false

사실 이제 iOS 13밑으로는 지원안해서 아래처럼 분기할 필요는 없지만 혹시나 해서 그냥둔다.

extension UIApplication {
    static var isLandscape: Bool {
        if AppConts.IS_MACOS {
            return true
        } else {
            if #available(iOS 13.0, *) {
                let scenes = UIApplication.shared.connectedScenes.first as? UIWindowScene
                let windowFirst = scenes?.windows.first
                return windowFirst?.windowScene?.interfaceOrientation.isLandscape ?? false
            } else {
                return UIApplication.shared.statusBarOrientation.isLandscape
            }
        }
    }
}