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

ScrollViewReader 的 proxy.scrollTo 不滚动

如何解决ScrollViewReader 的 proxy.scrollTo 不滚动

我有这段 SwiftUI 代码,它构建了一个太大而无法显示在屏幕上的大 UI 视图,所以我将它放在了一个 2D 滚动视图中。虽然这个例子是一个网格,让我们假设内容填充一样多,但项目更随机地放置。当视图出现时,我希望它首先将这些项目之一居中,在 ID 为“(25,25)”的项目下方的情况下。这编译得很好,文档看起来也很好,并运行,但不会滚动到 ID 为“(25,25)”的 ZStack。为什么它不滚动到这个 ZStack?该代码已在 iOS 14 和 iOS 15b1 上进行了测试。

var body: some View {
    ScrollViewReader { scrollView in
        ScrollView([.horizontal,.vertical]) {
            vstack(alignment: .leading,spacing: 0) {
                ForEach(0..<50) { y in
                    HStack(alignment: .center,spacing: 0) {
                        ForEach(0..<50) { x in
                            ZStack {
                                Circle()
                                    .frame(width: 35,height: 35)
                                    .foregroundColor(.blue.opacity(0.5))
                                Text("(\(x),\(y)")
                                    .font(.system(size: 8))
                            }
                            .offset(x: CGFloat(x * 25),y: CGFloat(y * 25))
                            .id("(\(x),\(y))")
                        }
                    }
                }
            }
            
        }
        .onAppear {
            dispatchQueue.main.asyncAfter(deadline: .Now() + 3.0) {
                scrollView.scrollTo("(25,25)")
            }
        }
    }
}

解决方法

我认为您将偏移误认为是填充,只需填充即可。


看起来不滚动到带有偏移量的视图确实是一个错误。

理论上您的代码有一个错误:您在偏移量之前向视图添加了一个 ID,因此当您滚动到该 ID 时,它会滚动到视图在偏移量之前的位置。

切换 class Comp { doSomething() { axios.get('http://localhost:8000/wel/') .then(res => { this.setState({ details: res.data }); }) .catch(err => {}); } componentDidMount() { this.doSomething(); } componentDidUpdate() { this.doSomething(); } } offset,它应该可以工作(虽然它没有让我认为这里某处存在 SwiftUI 错误)。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?