web-dev-qa-db-ja.com

Swiftui一覧の背景色

次のコードで背景色を黒に設定しようとしています

struct RuleList: View {[![enter image description here][1]][1]
private var presenter: ConfigurationPresenter?

@ObservedObject
private var viewModel: RowListViewModel

init(presenter: ConfigurationPresenter?, viewModel: RowListViewModel) {
    self.presenter = presenter
    self.viewModel = viewModel
}

var body: some View {
    List(viewModel.configurations) { configuration in
        RuleListRow(website: configuration.website).background(Color.black)
    }.background(Color.black)
}
}

struct RuleListRow: View {
var website: Website
@State private var websiteState = 0

var body: some View {
    VStack {
        Text(website.id).foregroundColor(.white)

        Picker(website.id, selection: $websiteState) {
            Text("Permis").tag(0)
            Text("Ascuns").tag(1)
            Text("Blocat").tag(2)
        }.pickerStyle(SegmentedPickerStyle()).background(Color.crimson)
    }.listRowBackground(Color.green)
}
}

ビューは混合Uikit - Swiftuiストーリーボードでホストされているので、この特定のビューはホスティングコントローラに埋め込まれています

class ConfigurationHostingController: UIHostingController<RuleList> {
private var presenter: ConfigurationPresenter = ConfigurationPresenter()

required init?(coder: NSCoder) {
    super.init(rootView: RuleList(presenter: presenter, viewModel: presenter.rowListViewModel))
}
}

私は.backgroundの組み合わせ、.listRowBackground(Color.black).colorMultiply(.black)を試しました

issue

6
Alex Bartiş

すべてのSwiftuiのList _ UITableViewin iosによってバックアップされます。そのため、の背景色をtableview 変更する必要があります。しかし、ColorUIColor値がわずかに異なるため、UIColorを取り除くことができます。

_struct ContentView: View {

    init() {
        UITableView.appearance().backgroundColor = .clear // tableview background
        UITableViewCell.appearance().backgroundColor = .clear // cell background
    }

    var body: some View {
        List {
            ,,,
        }
        .background(Color.yellow)
    }
}
_

これで任意の背景(すべてを含むColors)を使用できます。

注意してくださいそれらの上下の白い領域は安全です.edgesIgnoringSafeArea() modifierを取り除くことができます。

8