SwiftUI 中表单部分的背景清晰?

Posted

技术标签:

【中文标题】SwiftUI 中表单部分的背景清晰?【英文标题】:Clear background for form sections in SwiftUI? 【发布时间】:2020-09-17 20:48:22 【问题描述】:

我正在尝试删除某些部分的白色背景,以便元素正好位于灰色背景上,但我无法删除部分背景或使其透明。

这就是我正在尝试的:

struct ContentView: View 
    
    var body: some View 
        Form 
            Section 
                Text("Hello!")
                Button 
                    print("Clicked")
                 label: 
                    Text("Click Me!!")
                
            
            Section 
                VStack 
                    Button("Button 1") 
                    Spacer()
                    Button("Button 2") 
                
            
            .background(Color.clear) // Not doing anything
            Section 
                VStack(alignment: .leading) 
                    Text("Location")
                        .font(.headline)
                    Group 
                        Text("Abc")
                        Text("Abc")
                        Text("Abc")
                    
                    .font(.caption)
                
            
        
    

这就是它的样子:

我尝试将.background(Color.clear)添加到SectionVStack,但没有任何效果。这在 SwiftUI 中是如何实现的?

【问题讨论】:

【参考方案1】:

即使在 SwiftUI 2 中,Form 也是建立在 UIKit 之上的,特别是 UITableView

你需要移除默认UITableViewCell的背景(只需要一次,最好在App中init):

UITableViewCell.appearance().backgroundColor = UIColor.clear

并使用以下方法更改背景:

Section 
    VStack 
        Button("Button 1") 
        Spacer()
        Button("Button 2") 
    

.listRowBackground(Color.clear)

【讨论】:

我认为这会改变全球所有表格单元格的情况吗?但仍然觉得hacky。 Color.clear 真的应该自己工作。相反,这似乎非常接近:.listRowBackground(Color(.systemGroupedBackground)) @TruMan1,Form 是一个标准的外观控件。对标准控制的任何未正式记录的更改都是一种黑客行为,并且可能会停止使用任何系统更新。如果修饰符对它没有影响,那意味着它不应该有。其他一切由您自担风险。

以上是关于SwiftUI 中表单部分的背景清晰?的主要内容,如果未能解决你的问题,请参考以下文章

SwiftUI 2.0如何更改表单部分的背景颜色[重复]

更改选项卡式视图栏颜色 SwiftUI

SwiftUI 表单部分标题和行的格式不正确

制作具有清晰背景的 SwiftUI 视图?

SwiftUI:自定义按钮无法识别具有清晰背景和 buttonStyle 的触摸

如何在 SwiftUI 中更改表单的背景颜色?