ios - SwiftUI:如何在列表内正确设置内容大小变化的动画?

标签 ios swift swiftui

import SwiftUI

struct DynamicRectangle: View {
    @State private var isExpanded = false

    var body: some View {
        Rectangle()
            .fill(Color.blue)
            .frame(width: 200, height: isExpanded ? 400 : 200)
            .animation(.spring())

        .onTapGesture {
            self.isExpanded.toggle()
        }
    }
}

struct ContentView: View {

    var body: some View {
        List {
            DynamicRectangle()
            DynamicRectangle()
            DynamicRectangle()
        }
    }
}

这是一个仍然存在明显问题的小示例:尽管大小变化动画平滑,但列表本身会立即更改其行大小。是否有任何解决方法可以使其对行大小以及我内部的内容大小进行动画处理?

谢谢!

最佳答案

当我使用 ScrollView 时,它工作得很好:

import SwiftUI

struct DynamicRectangle: View {
    @State private var isExpanded = false

    var body: some View {
        Rectangle()
            .fill(Color.blue)
            .frame(width: 200, height: isExpanded ? 400 : 200)
            .animation(.spring())

        .onTapGesture {
            self.isExpanded.toggle()
        }
    }
}

struct ContentView: View {

    var body: some View {
        ScrollView {
            DynamicRectangle()
            DynamicRectangle()
            DynamicRectangle()
        }
    }
}

List 相比,我更喜欢 ScrollView

关于ios - SwiftUI:如何在列表内正确设置内容大小变化的动画?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58932825/

相关文章:

iphone - 在 UIView 上显示 XIB!如何设置?

ios - 我正在尝试将 Firebase 添加到我的 Today Extension。它不会让我将 firebase 导入我的 View Controller

swift - 我们如何在 SwiftUI 中制作自定义 GeometryReader?

swift - 如何解决 Swift 中的 "Generic parameter ' T' 无法推断”

ios - 核心数据, "sorting by transient property"解决方法

ios - NSFileManager 移动文件显示错误

基于运算符的 Swift 泛型约束

Swift - 如何声明一个接收范围内数字的方法

delegates - Swift 使用用 Objective-C 编写的委托(delegate)

ios - 如果未显示所有 NavigationLink,则 NavigationView 中 SwiftUI 的 NavigationLink `tag` 和 `selection` 将停止工作