NavigationView с ScrollView имеет неожиданную скорость (или без анимации) - большой заголовок + ScrollView - SwiftUI - iOS 14 - PullRequest
0 голосов
/ 06 августа 2020

Неожиданный скачок в ScrollView при использовании в NavigationView с большим заголовком.

Несогласованное поведение можно увидеть ниже:

Incorect behaviour

The minimum code required to reproduce:

import SwiftUI

struct LeaderboardView: View {

    var body: some View {
        
        NavigationView(){
        
            ScrollView(){
                VStack(){
                        ForEach(0...50, id: \.self){ number in
                            Text("Number: \(number)").padding()
                        }
                    }.frame(maxWidth:.infinity)
                
            }.navigationBarTitle("Numbers")
            Spacer();
        }
        
    }
}

struct LeaderboardView_Previews: PreviewProvider {
    static var previews: some View {
       
            LeaderboardView()
        
    }
}

The weirder thing is that after I add vertical padding to the scroll view, the behaviour changes and it does not snap as fast as in the photo above, but it is still un-natural. This can also be reproduced in canvas while previewing.

The expected behaviour would be something like this:

activityApp

Еще более интересным будет страница настроек в WhatsApp.

Я новичок в Swift (UI). Есть ли способ обойти это? Что мне не хватает?

Примечание: я использую XCode 12 beta 3

Ответы [ 2 ]

1 голос
/ 06 августа 2020

Чтобы иметь поведение, как на втором гифке, используйте List

NavigationView(){
    List{
        ForEach(0...50, id: \.self){ number in
            Text("Number: \(number)").padding()
        }
    }.navigationBarTitle("Numbers")
}
0 голосов
/ 08 августа 2020

Эта проблема была решена с обновлением Xcode Beta 4 и iOS 14 Beta 4. NavigationView () с ScrollView () можно использовать без проблем.

...