webBG - програмисти, машинно обучение, javascript, python, php, питам, говорим, публикации

SwiftUI - ScrollView не превърта до дъното

Имам проблеми с превъртането на моя изглед за превъртане до дъното. Странното е, че когато се попълни с един набор от данни, той няма този проблем, но в другия набор от данни стига до последния елемент и не мога да превъртя до долната половина на HStack.

въведете описание на изображението тук

Ето кода за изгледа

import SwiftUI

struct FestivalDescription: View {
@Environment(\.presentationMode) var presentationMode: Binding<PresentationMode>

var passportTitle: String
var passportImageVert: String
var venues: [Venue]

var body: some View {
    ZStack {
        ScrollView(.vertical, showsIndicators: false) {
            GeometryReader { geometry in
                ZStack{
                    if geometry.frame(in: .global).minY <= 0 {
                        Image(self.passportImageVert)
                            .resizable()
                            .aspectRatio(contentMode: .fill)
                            .frame(width: geometry.size.width, height: geometry.size.height)
                            .offset(y: geometry.frame(in: .global).minY/9)
                            .clipped()
                    } else {
                        Image(self.passportImageVert)
                            .resizable()
                            .aspectRatio(contentMode: .fill)
                            .frame(width: geometry.size.width, height: geometry.size.height + geometry.frame(in: .global).minY)
                    }
                    VStack {
                        Image("script_passport")
                            .resizable()
                            .aspectRatio(contentMode: .fit)
                            .frame(width: geometry.size.width * 0.75)
                        Text(self.passportTitle)
                            .fontWeight(.bold)
                            .foregroundColor(Color.white)
                            .padding(.top, 10)

                        // Insert Navigation Link

                        NavigationLink(destination: FestivalDetails(passportTitle: self.passportTitle, venues: self.venues, venueProd: [])) {
                            HStack {
                                Text("View all Food & Drinks")
                                    .font(.subheadline)
                                    .padding()
                            }.frame(width: 210, height: 50)
                                .background(Color.white)
                                .cornerRadius(4)
                                .padding(.top, 8)
                        }
                        // End Button
                    }
                }
            }.frame(height: UIScreen.main.bounds.height * 0.63)
                .clipped()// Ends GeometryReader
            VStack {
                HStack {
                    Text("Festival Booths")
                        .font(.title)
                        .fontWeight(.bold)
                    Spacer()
                }.padding(.top, 24)
                    .padding(.bottom, 16)
                ForEach(self.venues) { venue in
                    NavigationLink(destination: VenueDetails(title: venue.title,  venueImage: venue.venueImage, venueDesc: venue.venueDesc, venueArea: venue.venueArea, venueLat: venue.venueLat, venueLong: venue.venueLong, venueProd: venue.venueItems)) {
                        HStack {
                            VStack {
                                Image(venue.venueImage)
                                    .renderingMode(.original)
                                    .resizable()
                                    .frame(minWidth: 0, maxWidth: 366, minHeight: 0, maxHeight: 300)
                                    .scaledToFill()

                                HStack {
                                    Text(venue.title)
                                        .font(.body)
                                        .fontWeight(.semibold)
                                        .foregroundColor(Color("Charcoal"))
                                    Spacer()
                                }
                                HStack(alignment: .top) {
                                    Text(venue.venueDesc)
                                        .font(.footnote)
                                        .foregroundColor(Color("bodyText"))
                                        .multilineTextAlignment(.leading)
                                        .lineLimit(2)
                                        .frame(height: 40)
                                    Spacer()
                                }
                                Spacer()
                            }
                        }
                    }.padding(.bottom, 16)
                }
                // End VStack of Venues
               // Spacer()
            }.padding(.horizontal, 24)
            .background(Color("bodyBackground"))

            // Ends Bottom Layer VStack
        }
            .edgesIgnoringSafeArea(.top) // Ends ScrollView
        .background(Color("bodyBackground"))

        ZStack {
            GeometryReader { geometry in
                ZStack {

                    VStack {
                        Text("")
                            .frame(width: geometry.size.width, height: 120)
                            .background(Color("navBackground"))
                            .opacity(0.3                     )
                        Spacer()
                    }

                }.edgesIgnoringSafeArea(.top) // Ends ZStack
            } // Ends Geometry Reader
            VStack {
                GeometryReader { gr in
                    HStack {
                        Button(action: {self.presentationMode.wrappedValue.dismiss()}) {
                            Image(systemName: "chevron.left")
                                 .foregroundColor(Color("Charcoal"))
                                .padding(.leading, 16)
                            HStack {
                                Text("Passports · Passport Details")
                                    .font(.system(size: 15))
                                    .fontWeight(.bold)
                                     .foregroundColor(Color("Charcoal"))

                                    .padding()
                                Spacer()
                            }
                        }.frame(width: gr.size.width * 0.92, height: 48)
                            .background(Color("navBackground"))
                            .cornerRadius(8)
                        .shadow(color: Color("Shadow"), radius: 10, x: 2, y: 7)
                    }.padding(.leading, 16)
                    Spacer()
                }
            }
            .padding(.top, 50)
            .edgesIgnoringSafeArea(.top)
        } // Ends Floating Menu ZStack

    } // Ends Main ZStack
} 

}

  • Е, всъщност този код не се чете - опитайте се да го разделите на няколко подизгледа, но предполагам, че проблемът се дължи на тези много твърдо кодирани стойности в подложка, размер, височина и т.н. 01.03.2020

Отговори:


1

Оказа се, че проблемът ми е с модификатора на съотношението на изображението ми. Настроих го да пасва вместо да запълва и това реши проблема.

02.03.2020
Нови материали

Създайте разширение за Chrome с помощта на Angular
Този урок е базиран на манифеста на разширението на chrome версия 3 (MV3), а също и на Angular версия 2+ (2, 3 и...). Ако не сте използвали манифест версия 3, можете да следвате този урок ,..

За да научите нов език за програмиране, започнете отначало
Първоначално публикувано на http://www.mberlove.com/blog/a-new-programming-language-starting-over/ Програмистите се гордеят със способността си да усвояват лесно нови умения , разчитайки..

5 Youtubers на Data Science, които трябва да следвате
Защото всички можем да се справим с малко продуктивно отлагане Всички сме падали в заешката дупка на Youtube, така че защо да не я направим продуктивна?! Като непрекъснато нарастващ източник..

Бих казал, че точно това е проблемът с Twitter — това е инструмент на суперпотребител.
Бих казал, че точно това е проблемът с Twitter — това е инструмент на суперпотребител. По същия начин, по който суперкодерът сочи vim като единствения начин за кодиране, но останалите от нас..

Основи на Gradio
Gradio е най-ефективният метод за демонстриране на вашия модел на машинно обучение и разполага с удобен за потребителя онлайн интерфейс, който го прави достъпен от всяко място. Какво прави..

Илюстрация (GIF) за обяснение на дълбоки конволюционни мрежи (DCNN)
В света на компютърното зрение най-основният и често срещан алгоритъм за разпознаване на изображения е конволюционната мрежа. С популярността на рамки като tensorflow и pytorch, стана по-лесно да..

Python Bootcamp — Data Science Day 165
Python Bootcamp от Giles McMullen-Klein беше абсолютно невероятно. Джайлс има този уникален начин да улови аудиторията си, като същевременно прави съдържанието на курса много интересно...