SwiftUI 模态演示在 iPad 模拟上搞砸了?
Posted
技术标签:
【中文标题】SwiftUI 模态演示在 iPad 模拟上搞砸了?【英文标题】:SwiftUI modal presentation messed up on iPad simulation? 【发布时间】:2020-06-12 01:49:06 【问题描述】:所以我有一个 Modal 被拉起,它有导航链接,其中有其他视图作为目的地(现在,这些视图是空的)。出于某种原因,在 Xcode 中的 iPhone 模拟器上,模态演示很好;父视图被拉起,您可以单击导航链接以使模式打开一个新的“子页面”。但出于某种原因,在 iPad 模拟器上,父模态/视图占据了模态的一半,而导航链接(当我单击它们时)出现在模态的另一半。如何模仿 iPhone 模拟器上的行为?
如您所见,iPad 上模态演示的左侧是“设置”模态,当我单击导航链接时,“许可证”模态出现在右侧。如果我不点击导航链接,右侧是空的。
【问题讨论】:
【参考方案1】:将此添加到您的 NavigationView
NavigationView
....
.navigationViewStyle(StackNavigationViewStyle())
【讨论】:
【参考方案2】:默认的 SwiftUI 导航方法是使用 UISplitView 作为所有设备的底层导航模型。如果你熟悉 UISplitView 的特性,你就能理解 SwiftUI 导航的所有怪癖……
在简单模型中,这往往会产生主/细节交互模型,并解释了在设备旋转时看似随机的视图重置/重新创建。
指定 StackNavigationViewStyle 会有所帮助,因为它将模型从主/详细信息更改为单个堆叠的 UINavigationView 模型。这样更简单可靠,但没有有效利用 iPad Ui...
【讨论】:
以上是关于SwiftUI 模态演示在 iPad 模拟上搞砸了?的主要内容,如果未能解决你的问题,请参考以下文章
UITableView 布局在 push segue 和 return 上搞砸了。 (iOS 8、Xcode beta 5、Swift)
RecyclerView的行项目视图隐藏/显示在Recyclerview的滚动上搞砸了
UIActionSheet 搞砸了 iPad 上的抖动检测(motionBegan:delegate)