首页 > 解决方案 > SwiftUI - LazyVGrid 调整大小

问题描述

我正在尝试构建一个日历小部件,但我遇到了大小问题。

大型小部件一切正常,但不幸的是,小部件在中小型小部件中无法正确调整大小。

在此处输入图像描述

以下是相关代码:

var body: some View {
    GeometryReader { geometry in
        ZStack {

            //Background Image

            HStack {

                VStack(spacing: 5) {

                    HStack {
                        Spacer()
                        Text(date, formatter: monthFormatter)
                            .padding(.trailing, 5)
                    }
                    .padding(.bottom, 0)

                    LazyVGrid(columns: Array(repeating: GridItem(), count: 7), spacing: 2, content: {

                        ForEach(0..<calendar.veryShortStandaloneWeekdaySymbols.count, id: \.self) { d in
                            Text(calendar.veryShortStandaloneWeekdaySymbols[d])
                                .fontWeight(.semibold)
                                .minimumScaleFactor(0.2)
                                .foregroundColor(.white)
                        }

                        ForEach(days(), id: \.self) { day in
                            if calendar.isDate(day, equalTo: date, toGranularity: .month) {
                                Text("30")
                                    .hidden()
                                    .padding(8)
                                    .minimumScaleFactor(0.1)
                                    .lineLimit(1)
                                    .background(calendar.isDateInToday(day) ? Color.black : Color.clear)
                                    .clipShape(Circle())
                                    .overlay(
                                        Text(String(calendar.component(.day, from: day)))
                                            .foregroundColor(calendar.isDateInToday(day) ? Color.white : Color.black)
                                            .minimumScaleFactor(0.1)
                                            .lineLimit(1)
                                    )
                            } else {
                                Text("30")
                                    .hidden()
                                    .padding(5)
                            }
                        }
                    })
                    .border(Color.blue, width: 1)
                }
            }
            .padding(5)
            .frame(width: geometry.size.width, height: geometry.size.height)
        }
    }
}

完整代码在这里

标签: iosswiftui

解决方案


推荐阅读