第一次选择日期时 SwiftUI Datepicker 会更改大小

Vad*_* F. 5 datepicker ios swift swiftui

我在底部工作表视图中有一个日期选择器。

当底部工作表打开时,我第一次选择一天时,日期选择器高度会发生变化。PS:如果我使用 .frame 为选择器设置自定义高度,则日期选择器就会在框架内变得平滑。

在此输入图像描述

    var body: some View {
    VStack {
        HStack {
            Text("date_picker_title".ld())
                .font(.custom(Font.rRegular, size: 12))
                .padding()
            Spacer()
        }
        HStack {
            Text(date.prettyDate)
                .font(.custom(Font.rMedium, size: 28))
            Spacer()
            Text(date.prettyHour)
                .font(.custom(Font.rMedium, size: 28))
        }.padding(.horizontal)
        Seperator(cellHeight: 0).frame(height: 2)

        Spacer().frame(height: 6)
        DatePicker("", selection: $date, in: Date()..., displayedComponents: .date)
            .datePickerStyle(.graphical)
            .labelsHidden()
            .tint(Color.appPurple)
            .padding(.horizontal)
            .padding(.bottom, -10)
        Seperator(cellHeight: 0).frame(height: 2)
        HStack {
            Text("date_picker_enter_time".ld())
                .font(.custom(Font.rRegular, size: 12))
            DatePicker("", selection: $date, displayedComponents: .hourAndMinute)
                .labelsHidden()
                .tint(Color.appPurple)
            Spacer()
        }.padding()
        
        HStack {
            Button {
                completion(nil)
            } label: {
                Text("date_picker_cancel".ld())
                    .font(.custom(Font.rRegular, size: 14))
                    .foregroundColor(Color.appPurple)
            }
            Spacer()
            Button {
                completion(date)
            } label: {
                Text("date_picker_ok".ld())
                    .font(.custom(Font.rRegular, size: 14))
                    .foregroundColor(Color.appPurple)
            }
        }.padding(.horizontal)
        Spacer().frame(height: 50)
    }
    .frame(maxWidth: .infinity)
    .background(Color.appLightPurple)
    .padding(.bottom, -50)
}
Run Code Online (Sandbox Code Playgroud)

Dav*_*own 6

我遇到了类似的问题并收到此控制台警告:“UICalendarView 的高度小于它可以呈现其内容的高度;默认为最小高度”

我找到了这个答案来设置框架宽度。这不是最佳的,但似乎可以解决我的问题。

DatePicker(selection: $date, displayedComponents: .date)
   .datePickerStyle(.graphical)
   .frame(width: 320) // Bugfix for AutoLayout-Issue
Run Code Online (Sandbox Code Playgroud)