繁体   English   中英

如何在 SwiftUI 中反转列表

[英]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()
                    }
                }

我的假设是获得一些.onAppearoverride方法来完成这项工作。

似乎 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM