Изменение цвета фона SegementedPickerStyle (UIKit и SwiftUI)

Я использую окно выбора в SwiftUI для перехода между одной из трех страниц. Однако мне сложно понять, как настроить SegmentedPickerStyle.

У меня очень простое видение сборщика ... Это могло бы выглядеть так:

      Feed | For You | Tools

Дело в том, что вместо того, чтобы выглядеть как кнопки (как SegmentedPickerStyle по умолчанию), это будет просто текст с подчеркиванием для представления selectedSegment. Вот макет того, что я имею в виду.

Пока мне удалось только выяснить, как настроить:

  1. Цвет шрифта всего средства выбора
  2. SelectedSegment цвет фона «s
  3. Весь цвет фона сборщика, однако, он не работает с 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()
        }
    }

Биться головой о стену уже несколько часов ... любая помощь приветствуется; Благодарность!

0 ответов

Другие вопросы по тегам