【问题标题】:SwiftUI Multi Components PickerSwiftUI 多组件选择器
【发布时间】: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()
        }
    }

【问题讨论】:

    标签: swift swiftui picker


    【解决方案1】:

    为什么不使用实际的DatePicker() 设置为.hourAndMinute

                DatePicker("Select time",
                           selection: $selectedDate,
                           displayedComponents: .hourAndMinute)
                    .datePickerStyle(.wheel)
    

    【讨论】:

    • 我不能使用“日期选择器”,因为我的选择器允许用户选择 1 到 23 小时和 1 到 55 分钟的持续时间,因此我不能使用“日期选择器”。
    • 这似乎是 iOS 15 (FB9764631) 中的一个错误。我目前的建议是使用.menu 选择器样式。
    • 我喜欢使用它,但它会破坏 UI 和 UX
    • 然后我会使用 UIViewRepresentable 并将 UIKit 选择器放在一起。
    • 你有示例代码吗?
    猜你喜欢
    • 2019-10-27
    • 1970-01-01
    • 1970-01-01
    • 2020-09-07
    • 2019-11-13
    • 2020-12-11
    • 1970-01-01
    • 1970-01-01
    • 2022-06-13
    相关资源
    最近更新 更多