Изменение цвета фона SegementedPickerStyle (UIKit и SwiftUI)
Я использую окно выбора в SwiftUI для перехода между одной из трех страниц. Однако мне сложно понять, как настроить SegmentedPickerStyle.
У меня очень простое видение сборщика ... Это могло бы выглядеть так:
Feed | For You | Tools
Дело в том, что вместо того, чтобы выглядеть как кнопки (как SegmentedPickerStyle по умолчанию), это будет просто текст с подчеркиванием для представления selectedSegment. Вот макет того, что я имею в виду.
Пока мне удалось только выяснить, как настроить:
- Цвет шрифта всего средства выбора
- SelectedSegment цвет фона «s
- Весь цвет фона сборщика, однако, он не работает с UIColor.clear или UIColor.White по какой - то причине?
Единственный способ, которым я смог настроить средство выбора, - это переопределить компонент UIKit, который SwiftUI наследует от UISegmentedControl .
Вот мой код:
import SwiftUI
enum HomeTab: String, CaseIterable {
case Feed = "Feed"
case ForYou = "For You"
case Tools = "Tools"
}
struct SelectedHomeTab: View {
@Binding var selectedTab: HomeTab
var body: some View {
switch selectedTab {
case .Feed:
Text("Feed!")
case .ForYou:
Text("For you!")
case .Tools:
Text("Tools!")
}
}
}
struct HomeView: View {
@State private var currentTab: HomeTab = .ForYou
// Change SegementedPicker styling
init() {
UISegmentedControl.appearance().selectedSegmentTintColor = UIColor(named: "navyBlue") // custom asset color (what i want the underline to be)
UISegmentedControl.appearance().setTitleTextAttributes([.foregroundColor : UIColor.white], for: .selected)
UISegmentedControl.appearance().backgroundColor = UIColor.clear
}
var body: some View {
VStack {
Picker("", selection: $currentTab) {
ForEach(HomeTab.allCases, id: \.self) {
Text($0.rawValue)
}
}
.pickerStyle(SegmentedPickerStyle())
.padding(.bottom)
.padding(.horizontal)
SelectedHomeTab(selectedTab: self.$currentTab)
}
}
}
struct HomeTab_Previews: PreviewProvider {
static var previews: some View {
HomeView()
}
}
Биться головой о стену уже несколько часов ... любая помощь приветствуется; Благодарность!