ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 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
Designed by Tistory.