SwiftUI 在 TabbedView 上设置文本和图像

Posted

技术标签:

【中文标题】SwiftUI 在 TabbedView 上设置文本和图像【英文标题】:SwiftUI set Text and Image on TabbedView 【发布时间】:2019-06-07 05:11:30 【问题描述】:

TabbedView 的documentation 中,它说您可以使用LayoutView 添加文本和图像视图。我无法在任何地方找到对 LayoutView 的任何引用。

这行得通:

.tabItemLabel(Image("image"))

这很有效:

.tabItemLabel(Text("image"))

如何像 UITabBarItem 一样显示两者?

【问题讨论】:

【参考方案1】:

在 Xcode Beta 3 中,此问题已得到修复。这是一个例子。

.tabItem 
    Image(systemName: "circle")
    Text("Hello")

【讨论】:

【参考方案2】:

使用以下代码在TabbedView中设置图片和文字,

查看此帖子了解更多信息https://forums.developer.apple.com/thread/117472

TabbedView 
            tabOne()
                .tabItemLabel 
                    Image(systemName: "image1")
                    Text("Tab 1")
            
            tabTwo()
                .tabItemLabel 
                    Image(systemName: "image2")
                    Text("Tab 2")
            
        

【讨论】:

即使将tabOne()tabTwo() 替换为真实视图,我也无法编译。你能举一个有效的具体例子吗? 这是当前测试版中的一个错误。链接帖子中的人也有同样的问题。 我也陷入了困境。希望这个错误在版本中得到解决。 看起来像一个错误。使用 SF 符号时同样的问题。请使用反馈辅助提交错误【参考方案3】:

ios & iPadOS 13 Beta 2 Release Notes 中有一个解决方法:

解决方法:将传递给修饰符的视图包装在 VStack 中:

MyView()
    .tabItemLabel(VStack 
        Image("resourceName")
        Text("Item")
    )

请注意,它适用于我使用本地图像但不适用于 SF 符号(例如 Image(systemName: "clock.fill") 将不起作用)。


更新:

Xcode 11 beta 3 已修复此问题。 tabItemLabel 重命名为 tabItem,可以像下面这样使用:

.tabItem 
    Image(systemName: "plus")
    Text("Tab1")

【讨论】:

以上是关于SwiftUI 在 TabbedView 上设置文本和图像的主要内容,如果未能解决你的问题,请参考以下文章

SwiftUI:如何更改 TabbedView 中所选项目的图像

SwiftUI TabbedView 只显示第一个选项卡的内容

Xamarin 表单 - 如何在 TabbedView (iOS) 上自定义 VoiceOver

更新 SwiftUI 导航栏标题

DevExpress TabbedView : 从子窗体创建子窗体

如何在 SwiftUI 中将删除线()应用于点击的 foreach 文本项?