【问题标题】:Why does the transition of datePicker View not work as intended?为什么 datePicker View 的转换不能按预期工作?
【发布时间】:2021-10-19 18:29:45
【问题描述】:

如果我尝试打开此 DatePicker,视图会在过渡时跳跃,然后到达固定位置。控制台中还有一条很长的错误信息...“无法同时满足约束。”...

如果我只显示 .date 组件,就不存在这个问题。是内部问题吗?如果是,我如何存档相同的行为,因为我想要日期+时间选择器而没有详细的弹出屏幕,以便更快地选择。

感谢您的帮助:)

https://imgur.com/a/IEy2syY(在第二个按钮点击有错误的过渡)

struct ContentView: View {
    @State var toggle = false
    @State var date = Date(timeIntervalSinceNow: 0)
    var body: some View {
        ZStack{
            Button("sdflkj"){
                toggle.toggle()
            }
            VStack{
                Spacer()
                if toggle{
                    DatePicker("lsadjf", selection: $date, displayedComponents: [.date,.hourAndMinute])
                        .labelsHidden()
                        .datePickerStyle(GraphicalDatePickerStyle())
                }
            }
        }
   
    }
}

【问题讨论】:

    标签: xcode swiftui


    【解决方案1】:

    好像是ButtonDatePicker重叠导致的错误。




    使用 iPhone 12 模拟器测试

    struct ContentView: View {
        
        @State var toggle = false
        @State var date = Date(timeIntervalSinceNow: 0)
        
        var body: some View {
            ZStack{
                Button("Button"){
                    // add `withAnimation()`
                    withAnimation(.easeIn) {
                        toggle.toggle()
                    }
                }
                .offset(y: -50) // set y offset for prevent overlapping of Button and DatePicker
                
                VStack{
                    Spacer()
                    if toggle {
                        DatePicker("", selection: $date, displayedComponents: [.date,.hourAndMinute])
                            .padding()
                            .labelsHidden()
                            .datePickerStyle(GraphicalDatePickerStyle())
                            .zIndex(5) // or add .zIndex for prevent overlapping of Button and DatePicker
                    }
                }
            }
        }
    }
    

    【讨论】:

    • 在更大的应用程序中,日期选择器应该显示在另一个视图的顶部,就像全屏封面一样,但在一张纸上。因此,我认为我不可能避免重叠。在那里我尝试了 ZStack 和条件语句。
    • @sheldor 我更新了我的帖子。你可以尝试使用.zindex()。但是,要关闭的按钮不会不可见或可点击,但fullScreenCover 上应该有一个关闭按钮。所以不会有问题
    • 好的,我测试过了。如果在 iPhone 11 模拟器上执行此操作,则会出现控制台错误消息,如果在 iPhone 12 模拟器上执行,则没有消息。但是仍然存在这种看起来不正确的跳跃过渡。
    • @sheldor 对于这个问题,请添加更多信息,您正在讨论什么动画问题,添加更多代码,或者您想要的动画的视频或正在发生的动画。当我运行它时,动画似乎可以正常工作。
    • 我在这里添加了一个链接
    猜你喜欢
    • 1970-01-01
    • 2017-04-26
    • 2021-05-30
    • 2020-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多