在网格内对齐日期选择器

问题描述 投票:0回答:1

我有一个 SwiftUI 视图,在

GridRows
中呈现多个
Grid
。每行有 2 列,左列右对齐,右列左对齐。每行包含一个标题(左列)和数据字段(右列)。

TextFields
Pickers
的行为符合我的预期,与列的左侧对齐。但
DatePicker
只会与其列的右侧对齐。

我尝试过但不起作用的事情:

  • Spacer()
     之后放置 
    DatePicker
  • DatePicker
    放入
    VStack(alignment: .leading)
    GridRow

有人知道如何移动 DatePicker 以与左侧的其余行对齐吗?

下面是一个视图来说明

import SwiftUI

struct ContentView: View {
    
    @State var name = ""
    @State var date = Date()
    @State var house = Int()
    
    var body: some View {
        NavigationStack {
            ScrollView {
                VStack(alignment: .leading) {
                    Grid(alignment: .leading) {
                        GridRow {
                            Text("Name \(Image(systemName: "person")):")
                                .font(.headline)
                                .gridColumnAlignment(.trailing)
                            TextField("Full name", text: $name)
                                .font(.body)
                                .padding(.horizontal, 10)
                                .padding(.vertical, 5)
                                .background(Color(UIColor.systemBackground))
                                .cornerRadius(8)
                                .gridColumnAlignment(.leading)
                        }
                        GridRow {
                            Text("Birthdate \(Image(systemName: "calendar")):")
                                .font(.headline)
                            DatePicker("", selection: $date, displayedComponents: .date)
                        }
                        GridRow {
                            Text("House \(Image(systemName: "house")):")
                                .font(.headline)
                            Picker("", selection: $house) {
                                Text("Gryffindor").tag(1)
                                Text("Slytherin").tag(2)
                                Text("Ravenclaw").tag(3)
                                Text("Hufflepuff").tag(4)
                            }
                        }
                    }
                }
                .padding(10)
                .background(RoundedRectangle(cornerRadius: 10)
                    .fill(Color.gray
                        .gradient
                        .opacity(0.15)))
            }
            .padding(.horizontal)
            .navigationTitle("Add Wizard Info")
            .navigationBarTitleDisplayMode(.inline)
        }
    }
}
swiftui gridview datepicker
1个回答
0
投票

通过检查 UI 层次结构,SwiftUI 似乎将日期选择器放在

HStack
中,由标签、
Spacer
和代表
UIViewRepresentable
UIDatePicker
组成。

Spacer
使整个东西水平“扩展”,将日期选择器推到右侧。

只需将

.fixedSize()
添加到
DatePicker
中,使其达到理想大小。

DatePicker("", selection: $date, displayedComponents: .date)
    .fixedSize()
© www.soinside.com 2019 - 2024. All rights reserved.