如何在SwiftUI中反转列表

时间:2019-10-22 18:41:42

标签: ios swift swiftui swiftui-list

我是SwiftUI的新手,试图在Android npm rebuild node-sass中制作类似reverse的东西

LinearLayoutManager

在这种情况下,一切都从底部到顶部。

我能找到的所有有用的都是messagesRecyclerView = view.findViewById(R.id.messagesRecyclerView); manager = new LinearLayoutManager(activity, LinearLayoutManager.VERTICAL, true); // => true means reverse layout messagesRecyclerView.setLayoutManager(manager); 相反: Load tableview from bottom, scroll up (reverse tableview) (iOS)

tableview

但是我不知道如何将其添加到//In ViewDidLoad conversationTableView.transform = CGAffineTransform(rotationAngle: -(CGFloat)(Double.pi)); //In cellForRowAtIndexPath cell.transform = CGAffineTransform(rotationAngle: CGFloat(Double.pi)); 中(好像它只是TableView的包装)。 这里的另一种方法:How to populate UITableView from the bottom upwards?

List

我的假设是要使用某种 List { ForEach(itemsData.messages) { item in ChatRow(item: item) } Text("Load more messages...") .onAppear() { print("Load more messages...") self.itemsData.next() } } .onAppear方法来使这项工作有效。

SwiftUI似乎还太年轻而无法深入。

另一个问题:他们是否有API可以以编程方式在列表中滚动

希望我没有重复任何问题。

2 个答案:

答案 0 :(得分:4)

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)
            }
        }
    }
}

答案 1 :(得分:0)

@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)