SwiftUI 如何在多级 NavigationView 中停止 List 的动画
Posted
技术标签:
【中文标题】SwiftUI 如何在多级 NavigationView 中停止 List 的动画【英文标题】:SwiftUI How to stop the animation of List in Multi-level NavigationView 【发布时间】:2020-01-16 18:11:18 【问题描述】:当我在多级 NavigationView 中有一个多列表时,我只想停止动画。也许这不是“动画”,我只是想修复它。
在 Xcode 版本 11.3.1 (11C504) + ios 13.2 上
代码很简单,你可以发现它是有线的。
import SwiftUI
struct TestView: View
var body: some View
NavigationView
List
ForEach(1...4, id: \.self) _ in
NavigationLink(destination: AView())
Text("root")
struct AView: View
var body: some View
List
ForEach(1...4, id: \.self) _ in
NavigationLink(destination: BView())
Text("aview")
struct BView: View
var body: some View
List
ForEach(1...4, id: \.self) _ in
NavigationLink(destination: BView())
Text("bview")
struct TestView_Previews: PreviewProvider
static var previews: some View
TestView()
【问题讨论】:
如果您指的是过渡结束时的springs
(在您的屏幕录制中),那么在我身边没有观察到这种情况。使用 Xcode 11.2 / iOS 13.2 测试。
@Asperi 我的环境是 Xcode 版本 11.3.1 (11C504) / iOS 13.2。 :(
这是 swiftUI 中的已知错误。你可以在这里看到问题 - [***.com/questions/58505286/…
你在真机上试过了吗?有时,此类问题仅存在于 Xcode 中。
@Asperi 是的,当然,我在真机上试过。
【参考方案1】:
好的...我已经安装了这个倒霉的 Xcode 11.3.1... 这是一个解决方案(或解决方法,无论如何) - 使用显式 .listRowInsets
如下例所示(顺便说一句,插入可以是任何值)
List
ForEach(1...1000, id: \.self) _ in
NavigationLink(destination: BView())
Text("bview")
.listRowInsets(EdgeInsets(top: 0, leading: 20, bottom: 0, trailing: 20))
适用于任何动态列表
【讨论】:
以上是关于SwiftUI 如何在多级 NavigationView 中停止 List 的动画的主要内容,如果未能解决你的问题,请参考以下文章
SwiftUI:NavigationLink 内的水平 ScrollView 会中断导航
从 React-native-navigation v1 到现有项目的 react-native-navigation v2
如何重置嵌套的堆栈导航导航器 react-navigation v5
如何在我的 Windows 上从克隆的 repo 运行 React-Native-Navigation v2 Playground?