iOS SwiftUI为列表而不是单元格设置背景图像

Posted

技术标签:

【中文标题】iOS SwiftUI为列表而不是单元格设置背景图像【英文标题】:iOS SwfitUI set background image for list not cell 【发布时间】:2020-04-25 13:52:26 【问题描述】:

我正在尝试为我的 ListView 提供一个不应该适用于每个单元格的背景图像。所以整个视图只有一张图像。 我试图将.background(Image("nameOfImage)) 添加为列表修饰符,但没有做任何事情。

NavigationView 
    List(elements)  element in 
        NavigationLink(destination: NextView) 
            Text(element.name)
            Image(element.image)
        
    .background(Image("nameOfImage"))

我也尝试过 ZStack,但我认为列表覆盖了我的图像

那么如何将图像作为列表背景或视图背景(上面的代码是整个视图)

【问题讨论】:

如果这是针对 macOS 的帖子SwiftUI background color of List Mac OS 可能会有所帮助。 【参考方案1】:

它做到了,但关键是UITableViewUITableViewCell 具有默认的白色backgroundColor。你应该让它们透明以便看穿。

类似:

struct ContentView: View 

    init() 
        UITableView.appearance().backgroundColor = .clear // For tableView
        UITableViewCell.appearance().backgroundColor = .clear // For tableViewCell
    

    var body: some View 
        NavigationView 
            List(0...10, id: \.self)  number in
                Text("\(number)")
            .background(Image("BG"))
        
    


请注意,我已经简化了我的答案,使其独立于您项目的其他部分

【讨论】:

谢谢,但由于我还是 ios 编程的初学者,所以我像你一样尝试过。但这产生了两个我无法删除的错误:Closure containing a declaration cannot be used with function builder 'ViewBuilder'Initializers may only be declared within a type 对不起,我的错。我在手机上,在这里写代码有点困难 :) 我已经更新了 mu 答案 在你给我看之前我也试过了,但我遇到了另一个错误:Return from initializer without initializing all stored properties你能再帮我一次吗?不明白 这与我朋友的问题无关。您可能忘记为所有存储的属性赋值。我已经简化了我的答案,使其独立于您项目的其他部分,并使其成为一个工作示例。 这已经让我发疯了三天。我到处搜索。似乎比应该做的要难得多。有多少人会想到关闭 UI...谢谢您的回答。

以上是关于iOS SwiftUI为列表而不是单元格设置背景图像的主要内容,如果未能解决你的问题,请参考以下文章

每个部分具有不同单元格的 SwiftUI 列表

SwiftUI 列表禁用单元格按下

SwiftUI 列表中的自定义按钮

使用 Google 表格下拉菜单更改单元格背景颜色而不是文本

设置全日历单元格背景颜色

SwiftUI 中的 List 是不是复用类似于 UITableView 的单元格?