SwiftUI에서 운영체제와 OS 버전에 따라 코드를 작성해보자:)
dqQQQ
·2023. 11. 29. 15:34
개요
SwiftUI에서는 특정 운영체제, 특정 운영체제 버전에서만 가능한 것들이 있다.
iOS13에서는 되는게 16에서는 안될 수가 있고 macOS에는 되는데 iOS는 안되는것이 있다.
그럼 버전별로 코드를 다르게 짜야하는데 방법을 알아보겠다.
#available
코드안에서 특정 변수나 함수등을 분기하고 싶다면 이걸 사용하면 된다.
아래의 코드는 alert를 예시로 들었다.
iOS 15를 기준으로 사용법이 달라졌기에 이런식으로 코드를 분기해서 짰다.
if #available(iOS 15, *) {
wholeView
.alert(Text("주문 확인"), isPresented: $showingAlert, actions: {
Button("취소") { }
Button("확인") { orderViewModel.placeOrder(product: product, quantity: quantity) }
}, message: {
Text("진짜 구매하시겠습니까")
})
} else {
wholeView
.alert(isPresented: $showingAlert) {
Alert(title: Text("주문 확인"), message: Text("진짜 구매하시겠습니까"), primaryButton: .default(Text("확인"), action: {}), secondaryButton: .cancel(Text("취소")))
}
}
@available
@available은 코드 안에서 분기하기 위해서가아닌 함수, 클래스, 구조체, 프로토콜등의 앞에서 그것의 사용을 제한한다.
@available
class ho {
~~~
}
if & endif
전처리로 운영체제를 제한할 수 있다.
#if os(iOS)
print("ios에서만 할 코드")
#elseif os(macOS)
print("macOS에서만 할 코드")
#elseif os(watchOS)
print("wathOS에서만 할 코드")
#endif
'SwiftUI' 카테고리의 다른 글
SwiftUI의 ViewModifier에 대해 알아보자:) (0) | 2023.11.29 |
---|---|
SwiftUI에서의 에러들의 해결방법을 알아보자:) (0) | 2023.11.29 |
SwiftUI에서 알림창을 띄워보자:) (0) | 2023.11.29 |
SwiftUI에서 뷰의 가장자리에만 효과를 부여해보자:) (0) | 2023.11.29 |
SwiftUI의 메뉴에 대해서 공부해보자:) (0) | 2023.11.29 |