SwiftUI 多组件选择器
Posted
技术标签:
【中文标题】SwiftUI 多组件选择器【英文标题】:SwiftUI Multi Components Picker 【发布时间】:2021-12-28 19:55:26 【问题描述】:我尝试构建一个多组件选择器,一开始我遇到了两个组件之间的重叠视图,这使得与 UI 交互变得困难,然后我找到了解决问题的“.compositingGroup()”属性模拟器,但在真实设备上我遇到了同样的问题,然后我尝试了许多解决方案,比如将两个选择器嵌入“几何阅读器”并从中设置框架,但它也不起作用,所以请如果有人知道如何修复这个问题我很高兴知道。
代码
ZStack
background
HStack(spacing: 16)
hoursPicker
minutesPicker
private var hoursPicker: some View
HStack(spacing: 8)
Picker("Select Hour(s)", selection: $selectedHours)
ForEach(hoursRange, id: \.self)
Text("\($0)")
.toolBarViewNormalStyle()
.frame(width: 32, height: 32, alignment: .center)
.clipShape(RoundedRectangle(cornerRadius: 8, style: .continuous))
.compositingGroup()
.labelsHidden()
.pickerStyle(.wheel)
Text("Hr")
.toolBarViewNormalStyle()
private var minutesPicker: some View
HStack(spacing: 8)
Picker("Select Minute(s)", selection: $selectedMinutes)
ForEach(minutesRange, id: \.self)
Text("\($0)")
.toolBarViewNormalStyle()
.frame(width: 32, height: 32, alignment: .center)
.clipShape(RoundedRectangle(cornerRadius: 8, style: .continuous))
.compositingGroup()
.labelsHidden()
.pickerStyle(.wheel)
Text("Min")
.toolBarViewNormalStyle()
【问题讨论】:
【参考方案1】:为什么不使用实际的DatePicker()
设置为.hourAndMinute
?
DatePicker("Select time",
selection: $selectedDate,
displayedComponents: .hourAndMinute)
.datePickerStyle(.wheel)
【讨论】:
我不能使用“日期选择器”,因为我的选择器允许用户选择 1 到 23 小时和 1 到 55 分钟的持续时间,因此我不能使用“日期选择器”。 这似乎是 ios 15 (FB9764631) 中的一个错误。我目前的建议是使用.menu
选择器样式。
我喜欢使用它,但它会破坏 UI 和 UX
然后我会使用 UIViewRepresentable 并将 UIKit 选择器放在一起。
你有示例代码吗?以上是关于SwiftUI 多组件选择器的主要内容,如果未能解决你的问题,请参考以下文章
来自先前选择器的选择器值 - CoreData/SwiftUI