SwiftUI:使插入列表背景透明?

Posted

技术标签:

【中文标题】SwiftUI:使插入列表背景透明?【英文标题】:SwiftUI: Make inset List background transparent? 【发布时间】:2021-04-12 00:58:32 【问题描述】:

如何将List 的灰色背景设置为完全透明以让红色通过?

struct ContentView: View 
    var body: some View 
        NavigationView 
            ZStack 
                Color.red
                    .ignoresSafeArea()
                VStack 
                    HStack 
                        Text("Faux Title")
                            .font(.system(.largeTitle, design: .rounded))
                            .fontWeight(.heavy)
                        Spacer()
                        Button(action: 
                            // settings
                        , label: 
                            Image(systemName: "gearshape.fill")
                                .font(.system(.title2))
                        )
                    
                    .padding()
                    .navigationBarHidden(true)
                    
                    List 
                        Text("One")
                        Text("Two")
                        Text("Three")
                    
                    .listStyle(InsetGroupedListStyle())
                
            
        
    

【问题讨论】:

【参考方案1】:

在视图改变UITableView.appearance的init()中: 我们在 SwiftUI 中使用最多的东西,例如 List 或 NavigationView,. .它们不是纯 SwiftUI,它们来自 UIKit,因此我们使用 UIKit 代码类型来改变外观。如果你记得我们应该在 UIKit 中使用这样的代码。当我们在 init 中使用 UITableView 时,我们正在访问 UITableView UIKit 类,这意味着此更改将适用于我们项目中使用 List 的任何 View。

最好的方法是你正在做的方式,设置透明颜色,然后在正文中从 SwiftUI 更改颜色!这是最方便的方式。


struct ContentView: View 
    
    init()  UITableView.appearance().backgroundColor = UIColor.clear    // <<: here!
    
    var body: some View 
        NavigationView 
            ZStack 
                Color.red
                    .ignoresSafeArea()
                VStack 
                    HStack 
                        Text("Faux Title")
                            .font(.system(.largeTitle, design: .rounded))
                            .fontWeight(.heavy)
                        Spacer()
                        Button(action: 
                            // settings
                        , label: 
                            Image(systemName: "gearshape.fill")
                                .font(.system(.title2))
                        )
                    
                    .padding()
                    .navigationBarHidden(true)
                    
                    List 
                        Text("One")
                        Text("Two")
                        Text("Three")
                    
                    .listStyle(InsetGroupedListStyle())
                
            
        
    

【讨论】:

是的!这行得通!我想知道您是否可以通过简要说明其工作原理及其实际作用来更新您的答案。仍然试图围绕这些 SwiftUI 的一些东西。谢谢! 对不起,我解释了它,它不是纯粹的 SwiftUI,这就是为什么我们应该使用一些 UIKit 代码。

以上是关于SwiftUI:使插入列表背景透明?的主要内容,如果未能解决你的问题,请参考以下文章

SwiftUI 列表的透明背景——iOS14 中的行为变化

如何在 SwiftUI 中制作具有透明背景的模态视图?

SwiftUI 中 TextEditor 的透明背景

word文档如何设置图片背景透明

如何在 SwiftUI 中以降低透明度为菜单项获取 AccentColor 背景?

如何使DIV背景透明内容不透明