SwiftUI
Swift/SwiftUI os 버전별 분기
garlic
2023. 7. 17. 20:47
Swift - 기존 코드에서 os 버전별로 분기치는 방법
if #available(iOS 16.4, *) {
// iOS 버전이 16.4 이상인 경우 해당 로직 처리
}
else {
// iOS 버전이 16.4 미만인 경우 해당 로직 처리
}
SwiftUI ViewModifier 로 os 버전별 분기치는 방법
1번 방법 : if ViewModifier 와 함께 사용하는 방법
//ios 16.4인지 아닌지 판단하는 변수
extension Bool {
static var iOS16_4: Bool {
guard #available(iOS 16.4, *) else {
return false
}
return true
}
}
// 사용 예시
// Bool을 extension 하여 가독성을 올린다.
CustomView() // 내가 만든 뷰
.if(.iOS16_4, transform: { view in
view
// 추가할 뷰 모디파이어
})
// 추가 첨부
// if 문 태우는 viewModifier
extension View {
@ViewBuilder func `if`<Content: View>(_ condition: Bool, transform: (Self) -> Content) -> some View {
if condition {
transform(self)
} else {
self
}
}
}
2. 그냥 os 버전 분기 태우는 뷰 모디파이어를 만들어버리기
// View Modifier 생성
struct IsiOS16_4: ViewModifier {
let completion: () -> Void
init(completion: @escaping () -> Void) {
self.completion = completion
}
func body(content: Content) -> some View {
if #available(iOS 16.4, *) {
content
//ios 버전이 16.4 이상일 때 원하는 뷰 모디파이어 추가 구현
} else {
content
}
}
}
// View 에 extension 으로 넣어주어 사용하기 쉽도록 함
extension View {
func isiOS16_4(completion: @escaping () -> Void) -> some View {
modifier(IsiOS16_4(completion: completion))
}
}