【问题标题】:How to change background color of TabView in swiftUI?如何在 swiftUI 中更改 TabView 的背景颜色?
【发布时间】:2022-08-12 02:02:07
【问题描述】:

ios开发者大一。我选择了swift/swiftUI而不是Objective-c/UIKit来启动这个。

想在swiftUI中更改TabView的背景,首先我尝试使用background修饰符但没用,然后我在开发人员文档中找不到解决此问题的内容。

最后我找到了一个解决方案here,如下所示(使用 UITabBar),它可以工作。

所以我对此感到很困惑:

  1. SwiftUI 没有提供改变 TabView 背景颜色的方法?我们应该使用 UIKit/UITabBar 来做到这一点吗? SwiftUI 只是 UIKit 的一个包装器?
  2. 如果问题1的答案是YES,为什么swiftUI没有提供?这是因为swiftUI的不完善还是只是Apple不想让swiftUI开发者改变TabBar的背景颜色?特别是我们的场景真的想做点什么,但swiftUI买不起,我应该额外使用UIKit吗?
  3. 我不是 iOS 开发者,只是对做这个感兴趣。我应该先学习 UIKit,还是先学习 Objective-c?从 swift/swiftUI 开始是错误的吗?
    import SwiftUI
    
    struct HomeView: View {
        // Use UITabBar to do this.
        init() {
            UITabBar.appearance().backgroundColor = UIColor(.orange)
        }
    
        var body: some View {
            TabView {
                ClockScreen()
                    .tabItem {
                        Image(systemName: \"heart.fill\")
                        Text(\"Favourites\")
                    }
                ScheduleScreen()
                    .tabItem {
                        Image(systemName: \"mappin.circle.fill\")
                        Text(\"Friends\")
                    }
                ProfileScreen()
                    .tabItem {
                        Image(systemName: \"person.fill\")
                        Text(\"Nearby\")
                    }
            }
        }
    }
    
    
  • 这回答了你的问题了吗? Change Tabbed View Bar Color SwiftUI
  • @AbhinavMathur 对不起兄弟,这不是我想要的。使用 UITabBar 显然可以工作,但我想知道有没有办法在没有 UIKit 的情况下直接使用 swiftUI。而且我在列表中留下了更多问题。

标签: ios swift swiftui uikit


【解决方案1】:

我真的建议你学习UIKit,原因有以下几个:

  1. SwiftUI 在后台使用 UIKit,所以你终有一天会面对它。
  2. SwiftUI 是一个相对较新的框架,包含许多原始部分。 Apple 每年都在改进它,但它仍然远非完美。此外,大多数情况下,新引入的更改并不向后兼容,并且经常会破坏您的旧代码。
  3. 根据我的个人经验,我可以向您保证,复杂的SwiftUI 视图在不同版本的iOS 上呈现不同。
  4. 您将无法像UIKit 那样灵活地操作 UI 元素。在SwiftUI 中,如果不深入了解UIKit,您仍然无法完成一些琐碎的事情。

    这是一个很酷的框架,但我们需要给它更多的时间来成熟和变得更加稳定。

    Objective C 怎么样,你最终会需要它,因为仍有许多项目/应用程序/框架,你很可能有一天会工作,它们完全是用 Objective C 编写的。但是,如果您是iOS 的新手,在我看来,Swift 现在已经绰绰有余了。

【讨论】: