새 iOS 버전에서 추가된 SwiftUI 뷰 modifier 등을 사용할 때, 프로젝트가 이전 iOS 버전 호환 설정이 되어 있다면 다음과 같은 에러가 발생할 수 있습니다.
하지만, SwiftUI의 뷰 modifier 체인 도중에 단순히 if #available(...)를 넣으면 빌드 오류가 발생하는 경우가 많습니다.
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