当前位置: 首页 > 面试题库 >

如何使SwiftUI列表自动滚动?

姬康平
2023-03-14
问题内容

将内容添加到ListView时,我希望它自动向下滚动。

我正在使用SwiftUI List和a BindableObject作为控制器。新数据将追加到列表中。

List(chatController.messages, id: \.self) { message in
    MessageView(message.text, message.isMe)
}

当我将新数据追加到消息列表时,我希望列表向下滚动。但是,我必须手动向下滚动。


问题答案:

更新:在iOS 14中,现在有一种本机方式可以执行此操作。我正在这样做

        ScrollView(.vertical) {
            ScrollViewReader { scrollView in
                LazyVStack {
                    ForEach(notes, id: \.self) { note in
                        MessageView(note: note)
                    }
                }
                .onAppear {
                    scrollView.scrollTo(notes[notes.endIndex - 1])
                }
            }
        }

对于iOS 13及以下版本,您可以尝试:

我发现翻转视图对我来说似乎很好。这将在底部启动ScrollView,并在向其添加新数据时自动向下滚动视图。

  1. 旋转最外面的视图180 .rotationEffect(.radians(.pi))
  2. 在垂直平面上翻转 .scaleEffect(x: -1, y: 1, anchor: .center)

您还必须对内部视图执行此操作,因为现在它们都将旋转和翻转。要翻转它们,请执行上述相同操作。

如果需要这么多地方,可能值得为此定制视图。

您可以尝试以下操作:

List(chatController.messages, id: \.self) { message in
    MessageView(message.text, message.isMe)
        .rotationEffect(.radians(.pi))
        .scaleEffect(x: -1, y: 1, anchor: .center)
}
.rotationEffect(.radians(.pi))
.scaleEffect(x: -1, y: 1, anchor: .center)

这是一个将其翻转的View扩展

extension View {
    public func flip() -> some View {
        return self
            .rotationEffect(.radians(.pi))
            .scaleEffect(x: -1, y: 1, anchor: .center)
    }
}


 类似资料:
  • 问题内容: 我可以做一个静态列表 但是,如何从数组中动态生成元素列表?我尝试了以下操作,但出现错误: 包含控制流语句的闭包不能与函数生成器“ ViewBuilder”一起使用 有什么解决办法吗?我要完成的工作是一个列表,其中包含不是静态输入的动态元素集。 问题答案: 看起来答案与将我的视图包装在其中有关 这样,我现在可以从服务器获取视图数据并进行组合。而且,仅在需要时才实例化它们。

  • 我想使内联导航栏透明,使其与视图背景相匹配,但仅在滚动之前。一旦你滚动,我想使用默认的导航背景颜色,就像大导航栏一样,但与内联。 以下是苹果提醒应用程序(iOS14)中的一个示例: 我试过使用这个init,但它也会在滚动时改变导航栏的背景。

  • 我使用ng2图表来显示大约500到1000个数据。问题是我需要修复图表的with,有什么方法可以让ng-2图表滚动吗? 我尝试将图表包装在父div中,并将宽度设置为100%和overflow-x:滚动到chart div,但它不起作用

  • DataV-React轮播表鼠标移入是暂停滚动,好像没法改成添加滚动条

  • 问题内容: 我想运行自己的内部pypi服务器,以便在组织内分发鸡蛋。 我发现了一些项目,例如: http://pypi.python.org/pypi/EggBasket/ http://plone.org/products/plonesoftwarecenter 据我了解,pypi.python.org使用名为Cheese Shop的软件。 我的问题: 为什么我不能使用奶酪店本身?(我找不到它,

  • 我一直在研究一个思想,在这个思想中,它保持自动滚动,而不需要用户交互,这一点在使用android API(例如,SmoothScrollTopositionFromTop)时是绝对可行的。 我需要提高流畅度,效率和控制速度