如何解决在SwiftUI中使用ScrollViewReader,如何突出显示已滚动到的行?
如果我创建一个包含100行的简单true
,并创建一个滚动到60行的按钮,那么我想强调一下我位于60行,可能具有背景色或类似颜色。我不知道该怎么做。
verified
解决方法
这是可行的方法-您为突出显示的行引入状态,可以根据需要进行修改,包括滚动至
通过Xcode 12b5 / iOS 14测试
@State private var highlighted: Int?
var body: some View {
ScrollView {
ScrollViewReader { value in
Button("Jump to #60") {
value.scrollTo(60,anchor: .center)
highlighted = 60
}
ForEach(0..<100) { i in
Text("Line \(i)")
.frame(maxWidth: .infinity)
.background(i == highlighted ? Color.gray : Color.clear)
}
}
}
}
,
找到了办法。
如果当前索引和scrollTo目标相等,则创建一个函数来设置颜色。
func highlight(index: Int,target: Int) -> Color {
if target == index {
return .black
} else {
return .clear
}
然后使用它来设置背景,边框等。
Text("Line \(i)")
.border(highlight(index: i,target: 60),width: 5)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。