ret*_*pok 15 swiftui swiftui-list
我想创建一个 SwiftUI 列表,但不显示滚动指示器。ScrollView 提供了显示指标来做到这一点。怎么做到呢?
Moj*_*ini 28
您可以摆脱为所有Lists显示指示器,但使用UITableView. 因为SwiftUIList使用UITableView了幕后的iOS:
struct ContentView: View {
init() {
UITableView.appearance().showsVerticalScrollIndicator = false
}
var body: some View {
List(0...100, id: \.self) { item in
Text("hey")
}
}
}
Run Code Online (Sandbox Code Playgroud)
请注意,这将消除所有TableViews 和Lists 指标。如果需要,您应该让它再次可见。
好像苹果去除appearance黑客(但不是这一个尚未)。因此,您可以使用LazyVStackinside 和ScrollView代替List并使用可用参数来隐藏指标。
struct ContentView: View {
var body: some View {
ScrollView(.vertical, showsIndicators: false) { // <- This argument
LazyVStack {
ForEach(1...100, id: \.self) {
Text("\($0)").frame(height: 40)
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
Luk*_*ker 12
在接受的答案中没有任何外观变通办法,实际上很容易实现这一点。您只需使用 ScrollView 初始值设定项并将参数设置showsIndicators为 false。
ScrollView(.vertical, showsIndicators: false) {
// ... your content for scrollView
}
Run Code Online (Sandbox Code Playgroud)
在您的 ScrollView 中,您可以使用LazyVStack,如果您在这里有很多子视图并希望让 SwiftUI 高效渲染(按需)。
小智 11
隐藏滚动指示器现在变得非常简单
List {}.scrollIndicators(ScrollIndicatorVisibility.hidden)
Run Code Online (Sandbox Code Playgroud)
所选择的答案在 iOS 16 中不起作用。他们发布了一个viewModifier名为.scrollIndicators(.hidden). 我创建了一个 viewModifier 包装器,您可以在您的List:.modifier(HideListIndicatorsViewModifier())
struct HideListIndicatorsViewModifier: ViewModifier {
@ViewBuilder
func body(content: Content) -> some View {
if #available(iOS 16.0, *) {
content
.scrollIndicators(.hidden)
} else {
content
}
}
}
Run Code Online (Sandbox Code Playgroud)
在有原生 SwiftUI 方法来实现这一点之前,Introspect库提供了一个不错的解决方案。
将所有修饰符应用到列表后,只需添加以下内容作为最后一个修饰符:
List {
...
}
.introspectTableView { tableView in
tableView.showsVerticalScrollIndicator = false // here you can access any other UITableView property
}
Run Code Online (Sandbox Code Playgroud)
我希望在某个时候有一种本地方法可以做到这一点。
| 归档时间: |
|
| 查看次数: |
8556 次 |
| 最近记录: |