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)

Ioniq 5 上的谷歌地图搞砸了滑动模式

当我结合 UIPanGestureRecognizer 和自动布局时,我的 UIViews 搞砸了

在 iPad 上具有自定义大小的 SwiftUI sheet() 模态