-
Swift/SwiftUI os 버전별 분기SwiftUI 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)) } }
'SwiftUI' 카테고리의 다른 글
Framework not found FBLPromises (Swift Package Manager) 이슈 (0) 2023.05.02 Offset과 Padding의 차이 (0) 2020.12.17