带有 SwiftUI 的标签栏上方的额外导航视图

Posted

技术标签:

【中文标题】带有 SwiftUI 的标签栏上方的额外导航视图【英文标题】:Extra navigational view above the tab bar with SwiftUI 【发布时间】:2019-11-23 21:10:18 【问题描述】:

我想做一些类似于 ios 13 中的照片和播客应用中所做的事情。

这两个应用程序都有一个附加到标签栏的额外视图。在照片应用程序中,它是第二行导航,就像一个子菜单,它只出现在一个选项卡中。在 Podcasts 应用中,它是一个缩小的播放器,可在所有选项卡中使用。

在使用 SwiftUI 时,我有哪些选择可以做这样的事情?有没有办法将额外的视图附加到标签栏?还是应该在每个 tabItem 中使用 ZStack 并在每个 ZStack 中复制我的额外视图?

【问题讨论】:

【参考方案1】:

您可以在持久化view(TabBar、NavigationView 等)上使用.overlay 修饰符,例如:

TabView  ,,, 
.overlay(
    Rectangle()
    .foregroundColor(.red)
    .frame(width: 40, height: 40)
)

当然是正确的配置!这只是一个演示,看看如何拥有持久视图。

您还可以定义自己的自定义修饰符并将其应用于标签栏。 唯一重要的事情是将其应用于持久的view。所以你不需要在每个视图中复制你的额外视图。

【讨论】:

我用它非常成功地实现了一个自定义底部标签栏按钮。许多其他解决方案都有很多开销。谢谢! 如何将视图发送到底部,使其与标签栏齐平?

以上是关于带有 SwiftUI 的标签栏上方的额外导航视图的主要内容,如果未能解决你的问题,请参考以下文章

使用导航控制器后标签栏项目图标丢失

如何在每个应用程序视图的导航栏上添加带有动态内容的标签?

在 SwiftUI 中增加标签栏项目图标的大小

更改标签栏图标图像 SwiftUI

如何在 SwiftUI 的标签栏的特定视图中隐藏导航栏?

带有列表的 SwiftUI 自定义导航栏