SwiftUI提供了很多滚动指示器控制修饰符,用于控制 ScrollView 或 List。
常用的滚动修饰符
1、.scrollIndicators(_:):控制滚动条显示与否;
2、.showsIndicators(_:):旧版本(iOS 16 以前)的 ScrollView 用法,布尔值控制是否显示滚动条;
3、.scrollDisabled(_:):禁止滚动(例如 .scrollDisabled(true))。
ScrollView { ... }.scrollDisabled(true) // 禁止滚动
4、.scrollTargetBehavior(_:):控制滚动惯性(如分页、定点对齐等)。
ScrollView(.horizontal) {
HStack(spacing: 0) {
ForEach(0..<5) { i in
Color.blue.opacity(Double(i) * 0.2)
.frame(width: 300, height: 200)
}
}
}
.scrollTargetBehavior(.paging)
改变滚动惯性(分页效果)。
5、.scrollBounceBehavior(_:):控制滚动到边缘时的回弹效果(iOS 17+);
6、.scrollClipDisabled(_:):控制滚动内容是否裁剪在边界内;
7、.scrollPosition(id:):绑定滚动位置,实现“滚动到指定项”效果;
8、.scrollContentBackground(_:):控制 List 的默认背景是否可见(常用于自定义背景);
9、.scrollTransition(_:):定义滚动时的动画或过渡效果(iOS 17+);
10、.scrollTargetLayout():改变滚动容器中元素的布局方式;
11、.scrollBounceBehavior(_:):控制是否允许回弹(iOS 17 新增);
ScrollView {
...
}
.scrollBounceBehavior(.basedOnSize) // 或 .always / .never
12、.scrollIndicators(.hidden):隐藏滚动条。
enum Visibility {
case automatic // 默认,用户滚动时自动显示
case visible // 始终显示
case hidden // 永不显示
}
ScrollView(showsIndicators: false) { ... } // iOS 16 前写法
ScrollView { ... }.scrollIndicators(.hidden) // iOS 16+ 推荐
