微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在SwiftUI中使用ScrollViewReader,如何突出显示已滚动到的行?

如何解决在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 举报,一经查实,本站将立刻删除。