gpt4 book ai didi

swift - 如何使 SwiftUI 列表自动滚动?

转载 作者:搜寻专家 更新时间:2023-10-31 22:53:02 25 4
gpt4 key购买 nike

向我的 ListView 添加内容时,我希望它自动向下滚动。

我使用 SwiftUI ListBindableObject 作为 Controller 。新数据被附加到列表中。

List(chatController.messages, id: \.self) { message in
MessageView(message.text, message.isMe)
}

我希望列表向下滚动,因为我将新数据附加到消息列表。但是我必须手动向下滚动。

最佳答案

更新:在 iOS 14 中,现在有一种本地方法可以执行此操作。我就是这样做的

        ScrollViewReader { scrollView in
ScrollView(.vertical) {
LazyVStack {
ForEach(notes, id: \.self) { note in
MessageView(note: note)
}
}
.onAppear {
scrollView.scrollTo(notes[notes.endIndex - 1])
}
}
}

对于 iOS 13 及以下版本您可以尝试:

我发现翻转 View 对我来说似乎非常有效。这会在底部启动 ScrollView,并在向其添加新数据时自动向下 ScrollView 。

  1. 将最外面的 View 旋转 180 .rotationEffect(.radians(.pi))
  2. 在垂直平面上翻转它 .scaleEffect(x: -1, y: 1, anchor: .center)

您也必须对您的内部 View 执行此操作,因为现在它们都将被旋转和翻转。要翻转它们,请执行上面相同的操作。

如果您需要这么多地方,可能值得为此设置一个自定义 View 。

您可以尝试以下操作:

List(chatController.messages, id: \.self) { message in
MessageView(message.text, message.isMe)
.rotationEffect(.radians(.pi))
.scaleEffect(x: -1, y: 1, anchor: .center)
}
.rotationEffect(.radians(.pi))
.scaleEffect(x: -1, y: 1, anchor: .center)

这是一个翻转它的 View 扩展

extension View {
public func flip() -> some View {
return self
.rotationEffect(.radians(.pi))
.scaleEffect(x: -1, y: 1, anchor: .center)
}
}

关于swift - 如何使 SwiftUI 列表自动滚动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57258846/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com