更新:在 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 及更低版本,您可以尝试:
我发现翻转视图似乎对我来说非常有效。这会在底部启动 ScrollView,并向其添加新数据时会自动向下滚动视图。
- 将最外层视图旋转 180
.rotationEffect(.radians(.pi))
- 将其翻转到垂直平面上
.scaleEffect(x: -1, y: 1, anchor: .center)
您也必须对您的内部视图执行此操作,因为现在它们都将被旋转和翻转。要将它们翻转回来,请执行与上面相同的操作。
如果您需要这么多地方,那么可能值得为此定制视图。
您可以尝试如下操作:
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)
这是一个用于翻转它的视图扩展
extension View {
public func flip() -> some View {
return self
.rotationEffect(.radians(.pi))
.scaleEffect(x: -1, y: 1, anchor: .center)
}
}