[英]How to make List reversed in SwiftUI
我是 SwiftUI 的新手,试图在 Android LinearLayoutManager
中进行类似reverse
的操作
messagesRecyclerView = view.findViewById(R.id.messagesRecyclerView);
manager = new LinearLayoutManager(activity, LinearLayoutManager.VERTICAL, true); // => true means reverse layout
messagesRecyclerView.setLayoutManager(manager);
在这种情况下,一切都是从下到上的。
我能找到的所有有用的东西都是tableview
reverse: Load tableview from bottom, scroll up (reverse tableview) (iOS)
//In ViewDidLoad
conversationTableView.transform = CGAffineTransform(rotationAngle: -(CGFloat)(Double.pi));
//In cellForRowAtIndexPath
cell.transform = CGAffineTransform(rotationAngle: CGFloat(Double.pi));
但我不知道如何将它添加到List
(似乎它只是 TableView 的包装器)。 这里的另一种方法: 如何从底部向上填充 UITableView?
List {
ForEach(itemsData.messages) { item in
ChatRow(item: item)
}
Text("Load more messages...")
.onAppear() {
print("Load more messages...")
self.itemsData.next()
}
}
我的假设是获得一些.onAppear
或override
方法来完成这项工作。
似乎 SwiftUI 对 go 来说太年轻了。
另一个问题:他们是否有 API 以编程方式在 List 中滚动?
希望我没有重复任何问题。
将其用于匿名聊天应用https://en.lonje.com/
UITableView
上有一个技巧,您可以翻转表格和每个单元格。 所以它似乎是从底部填充的。 您也可以在 SwiftUI 中执行此技巧:
完全工作演示:
struct ContentView: View {
@State private var ids = [String]()
init() {
UITableView.appearance().tableFooterView = UIView()
UITableView.appearance().separatorStyle = .none
}
var body: some View {
ZStack {
List(ids, id: \.self) { id in
Text(id).scaleEffect(x: 1, y: -1, anchor: .center)
}.scaleEffect(x: 1, y: -1, anchor: .center)
Button("Touch") {
self.ids.append(UUID().uuidString)
}
}
}
}
@cipais 的回答效果很好。 https://stackoverflow.com/a/61036551/12208004
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)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.