LazyVGrid выталкивает VStack из кадра, как привязать представление к границам?

#swiftui #widgetkit

Вопрос:

Я начинающий программист SwiftUI, который пытается добавить виджет в свое приложение, но у него возникли некоторые проблемы с этим.

LazyVGrid просто выталкивает другой вид (логотип текст даты ()) из рамки для устройств с небольшим экраном (протестировано в симуляторе iPhone 8).

Как я могу привязать представление к верхней части рамки виджета, как в UIKit?

 struct WidgetEntryView : View {
    var entry: Provider.Entry
    
    @Environment(.widgetFamily)
    var widgetFamily

    var body: some View {
        VStack(alignment: .trailing, spacing: 6) {
            if widgetFamily != .systemSmall {
                HStack {
                    Image("log")
                        .resizable()
                        .scaledToFit()
                        .frame(maxWidth: .infinity, minHeight:20, maxHeight:20, alignment: .leading)
                        
                    
                    Text(Date(), style: .date)
                        .font(.system(size: 13, design: .default))
                        .foregroundColor(.white)
                }
            } else {
                Image("log")
                    .resizable()
                    .scaledToFit()
                    .frame(maxWidth: .infinity, minHeight:20, maxHeight:20, alignment: .leading)
            }


            if widgetFamily == .systemLarge {
                let columns: [GridItem] = Array(repeating: .init(), count: 2)

                LazyVGrid(columns: columns) {
                    ForEach((0..<4)) { index in
                        ZStack (alignment: .bottomLeading) {
                            if let url = URL(string: entry.imageUrl[index]), let imageData = try? Data(contentsOf: url),
                            let uiImage = UIImage(data: imageData) { // Thread 1: Fatal error: Index out of range
                            Image(uiImage: uiImage)
                                .centerCropped()
                                .frame(maxHeight: 150, alignment: .center)
                                .cornerRadius(10)
                                        .overlay(RoundedRectangle(cornerRadius: 10)
                                        .stroke(Color.gray, lineWidth: 1))
                                        .shadow(radius: 10)
                            } else {
                                Image("ph_background")
                                    .centerCropped()
                                    .frame(maxHeight: 150, alignment: .center)
                                    .cornerRadius(10)
                                            .overlay(RoundedRectangle(cornerRadius: 10)
                                            .stroke(Color.gray, lineWidth: 1))
                                            .shadow(radius: 10)
                            }
                                
                            Text(entry.header[index])
                                    .font(.system(size: 12))
                                    .foregroundColor(.white)
                                    .fontWeight(.light)
                                    // .frame(maxHeight: 50)
                                    .background(Rectangle().fill(Color.black).blur(radius: 20))
                                    .padding(.bottom, 5)
                                    .padding(.leading, 5)
                                    .padding(.trailing, 5)
                                    .padding(.top, 5)
                        }
                    }
                    .frame(height:160)
                }
            }
        }
        .frame(minWidth: 0, maxWidth: .infinity, minHeight: 0, maxHeight: .infinity)
        .padding()
        .background(LinearGradient(gradient: Gradient(colors: [Color(red:0.92, green:0.00, blue:0.02), Color(red:0.65, green:0.00, blue:0.01)]), startPoint: .top, endPoint: .bottom))
    }
}