[iOS | SwiftUI] SwiftUI View 안에서 iOS 버전별 처리

someng·2025년 12월 1일

iOS

목록 보기
40/41

새 iOS 버전에서 추가된 SwiftUI 뷰 modifier 등을 사용할 때, 프로젝트가 이전 iOS 버전 호환 설정이 되어 있다면 다음과 같은 에러가 발생할 수 있습니다.

하지만, SwiftUI의 뷰 modifier 체인 도중에 단순히 if #available(...)를 넣으면 빌드 오류가 발생하는 경우가 많습니다.

📦 View.modify(_:)을 이용한 조건부 modifier

modifier 체인 중간에 조건을 넣고 싶다면, 아래와 같은 View 확장을 추가해서 사용할 수 있습니다.

import SwiftUI

public extension View {
    func modify(@ViewBuilder transform: (Self) -> some View) -> some View {
        transform(self)
    }
}

위 확장을 통해, body 내에서 아래처럼 iOS 버전에 따라 modifier를 다르게 적용할 수 있습니다.

List {
    Section {
        // ... section content ...
    }
    .modify { content in
        if #available(iOS 26, *) {
            content
                .sectionIndexLabel(Text("..."))
        } else {
            content
        }
    }
}

출처
https://swiftui-garden.com/Articles/Handling-different-iOS-versions-in-a-View-body

profile
👩🏻‍💻 iOS Developer

0개의 댓글