如何在 SwiftUI 中制作粘性栏?

cyb*_*bot 9 swiftui

我是SwiftUI的新手,仍然无法理解如何在List. 就像您列出艺术家或歌曲时苹果音乐应用程序中的字母一样(参见示例)。

List我探索了和 的能力NavigationView,但一无所获。

qzh*_*ann 10

LazyVStack提供一个带有pinnedView参数的初始值设定项,该参数正是执行此操作的。


Lin*_*ann 9

pinnedViews在初始化程序中使用LazyVStack

LazyVStack(pinnedViews: [.sectionHeaders]) {
    Section(header: Text("Sticky Header")) {
        ForEach(0...3) { item in
            Text(item)
        }
    }
}
Run Code Online (Sandbox Code Playgroud)


Ene*_*ume 5

SwiftUI\xe2\x80\x99s列表视图内置了对节和节标题的支持,UITableView就像UIKit. 要在某些单元格周围添加部分,请首先在Section其周围放置 。

\n\n

我们想要做的是创建一个包含两个部分的列表视图:一个用于重要任务,一个用于不太重要的任务。这是\xe2\x80\x99 的样子:

\n\n
struct ContentView: View {\n    var body: some View {\n        List {\n            Section(header: Text("Important tasks")) {\n                TaskRow()\n                TaskRow()\n                TaskRow()\n            }\n\n            Section(header: Text("Other tasks")) {\n                TaskRow()\n                TaskRow()\n                TaskRow()\n            }\n        }\n    }\n}\n
Run Code Online (Sandbox Code Playgroud)\n

  • 我以为这个问题是关于粘性标题的?我想知道为什么这个答案被标记为正确。这些不是粘性标题。 (11认同)
  • 如果将 listStyle 设置为 .plain,它们就会粘住 (2认同)