SwiftUI ScrollView 自动添加不需要的动画

Posted

技术标签:

【中文标题】SwiftUI ScrollView 自动添加不需要的动画【英文标题】:SwiftUI ScrollView adds unwanted animation automatically 【发布时间】:2020-05-06 07:21:32 【问题描述】:

我在 SwiftUI ScrollView 中遇到动画问题。我可以使用下面的代码在 Playground 中重现它。我只想为不透明度设置动画,但它也会为缩放设置动画。如果我使用 VStack 而不是 ScrollView 它可以工作。但我需要它是可滚动的。

有没有人遇到过同样的问题,可以给我一个快速提示吗?

实际行为:https://giphy.com/gifs/h8DSbS1xZ9PJyHIJrY

import SwiftUI
import PlaygroundSupport

struct ContentView: View 

    @State var showText = 0.0
    var body: some View 
        ScrollView 

        Text("Test")
            .font(.title)
            .opacity(showText)
        Text("Another really really long text")
            .opacity(showText)
        
    .frame(width: 320, height: 420)
    .background(Color.red)
    .onAppear 
        withAnimation(Animation.easeInOut(duration: 1)) 
            self.showText = 1.0
        
        
    


PlaygroundPage.current.liveView = UIHostingController(rootView: ContentView())

【问题讨论】:

【参考方案1】:

这是可能的解决方案。使用 Xcode 11.4 / ios 13.4 测试

ScrollView 
    VStack 
        Text("Test")
            .font(.title)
        Text("Another really really long text")
    
    .fixedSize()
    .opacity(showText)

【讨论】:

以上是关于SwiftUI ScrollView 自动添加不需要的动画的主要内容,如果未能解决你的问题,请参考以下文章

ScrollView 行为怪异(Xcode 11 GM 种子 - SwiftUI)

SwiftUI - 嵌入 ScrollView 后文本被截断

SwiftUI 水平 ScrollView 具有不可见的填充

SwiftUI:如何仅在设备处于横向模式时启用 ScrollView?

SwiftUI - ScrollView 的宽度为 0,我的内容不可见

SwiftUI 中 ScrollView 的图像大小限制是多少?