首先,操场的例子,证明了这个问题:
import UIKit
import SwiftUI
import PlaygroundSupport
struct MyList: View {
var body: some View {
content
}
private var content: some View {
List {
Section {
Text("hello")
}
.background(Color.red) // This only changes small area around text. Looking for Workaround 2
}
.background(Color.blue) // This doesn't work (Workaround 1)
.foregroundColor(Color.yellow)
}
init() {
// Workaround 1 - works
UITableView.appearance().backgroundColor = .blue
// Workaround 2 - nothing below helps
UITableView.appearance().sectionIndexTrackingBackgroundColor = .green
UITableView.appearance().sectionIndexBackgroundColor = .green
UITableViewCell.appearance().backgroundColor = .green
UITableViewCell.appearance().backgroundView = nil
UITableViewCell.appearance().backgroundConfiguration = .clear()
}
}
let viewController = UIHostingController(rootView: MyList())
// Present the view controller in the Live View window
PlaygroundPage.current.liveView = viewController
说明:
View
有一个List
,我需要改变背景。有一个众所周知的变通方法,通过UITableView.appearance().backgroundColor
来更改它,这就是我所做的。到目前为止还不错。- 我还需要改变部分的背景。在下面的图片中,我希望整个部分都是红色,而不是白色。白色根本不应该存在:
但我找不到实现这一目标的方法。如果我将.background(Color.red)
添加到Section,它只会更改文本周围的小区域。好的,但是如果白色区域不是List
的一部分,也不是Section
,那么剩下的白色区域是什么?
我尝试了SO中的各种变通方法,如// Workaround 2 - nothing below helps
下所列。他们都没有帮助。
所以我的问题是,简单地说,我如何摆脱这个布局中的白色区域。
注意事项:
- 我宁愿不从列表中切换出来,除非这是唯一的选择。
- 涉及内省的答案也很好。
1条答案
按热度按时间gmxoilav1#
变更:
收件人:
Apple Developer Reference