Can SwiftUI.Picker.segmented make one or more segments disable in iOS 16?

I'm trying to make one of my segments disable and configure different font color. I'm able to achieve it by using .selectionDisabled(), which is only available in iOS 17 +. I am wondering if there's an alternative for iOS 16. Thank you

import SwiftUI
struct MySegment: Hashable {
let label: String
let isDisabled: Bool
}
struct MySegmentedControlView: View {
@State var selection: String = "item1"
let data: [MySegment] = [
MySegment(label: "item1", isDisabled: false),
MySegment(label: "item2", isDisabled: false),
MySegment(label: "item3", isDisabled: true)
]
init() {
UISegmentedControl.appearance().backgroundColor = .red.withAlphaComponent(0.15)
UISegmentedControl.appearance().selectedSegmentTintColor = .red
UISegmentedControl.appearance().setTitleTextAttributes([.foregroundColor: UIColor.white], for: .selected)
UISegmentedControl.appearance().setTitleTextAttributes([.foregroundColor: UIColor.gray], for: .normal)
UISegmentedControl.appearance().setTitleTextAttributes([.foregroundColor: UIColor.systemGray6], for: .disabled)
}
var body: some View {
VStack {
Picker("", selection: $selection) {
ForEach(data, id: \.label) {
if #available(iOS 17.0, *) {
Text($0.label)
.selectionDisabled($0.isDisabled)
} else {
Text($0.label)
.tag($0.label)
.disabled($0.isDisabled)
}
}
}
.pickerStyle(.segmented)
}
.padding()
}
}

The alternative here is to create a segmented control using UIKit and wrap it in a SwiftUI view using UIViewRepresentable. That would give you finer customization on the control that you need.

Can SwiftUI.Picker.segmented make one or more segments disable in iOS 16?
 
 
Q