如何解决更改 SegementedPickerStyle 的背景颜色UIKit 和 SwiftUI
我在 SwiftUI 中使用 Picker 视图在 3 页中的 1 页之间导航。但是,我很难弄清楚如何自定义 SegmentedPickerStyle。
我对选择器的设想非常简单......它看起来像:
Feed | For You | Tools
事情是,而不是看起来像按钮(如 SegmentedPickerStyle 默认情况下),它只是文本,使用下划线表示 selectedSegment Here's a mockup of what I mean
到目前为止,我只能想出如何自定义:
- 整个 Picker 的字体颜色
- SelectedSegment 的背景 颜色
- 整个 Picker 的背景颜色,但是,由于某种原因,它不适用于 UIColor.clear 或 UIColor.White 吗?
我能够自定义选择器的唯一方法是覆盖 SwiftUI 继承自的 UIKit 组件 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()
}
}
现在把我的头撞在墙上几个小时……非常感谢任何帮助;谢谢!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。