Как изменить цвет фона списка - PullRequest
6 голосов
/ 09 июня 2019

Я пытаюсь воссоздать пользовательский интерфейс, созданный с помощью UIKit, для изучения SwiftUI, но у меня возникают незначительные проблемы.

Я хочу изменить цвет списка, но, похоже, ни одно свойство не работает, как я ожидаю. Пример ниже:

struct ListView: View {
    @EnvironmentObject var listData: ListData

       var body: some View {
        NavigationView {
            List(listData.items) { item in
                ListItemCell(item: item)
            }
            .content.background(Color.yellow) // not sure what content is defined as here
            .background(Image("paper-3")) // this is the entire screen 
        }
    }
}

struct ListItemCell: View {
    let item: ListItem

    var body: some View {


        NavigationButton(destination: Text(item.name)) {
            Text("\(item.name) ........................................................................................................................................................................................................")
                .background(Color.red) // not the area I'm looking for
        }.background(Color.blue) // also not the area I'm looking for
    }
}


I want to change the WHITE area

Ответы [ 4 ]

2 голосов
/ 16 июня 2019

Я предполагаю, что модификатор listRowPlatterColor должен сделать это, но не относится к Xcode 11 Beta 11M336w

var body: some View {
    List(pokemon) { pokemon in
        PokemonCell(pokemon: pokemon)
            .listRowPlatterColor(.green)
    }
}
2 голосов
/ 10 июня 2019

Хорошо, я нашел решение для раскраски строк списка:

struct TestRow: View {

    var body: some View {
        Text("This is a row!")
        .listRowBackground(Color.green)
    }
}

, а затем в теле:

List {
    TestRow()
    TestRow()
    TestRow()
}

Это работает, как я ожидал, но я пока не нашелузнать, как затем удалить разделительные линии между строками ...

1 голос
/ 10 июня 2019

Мне удалось получить весь список для изменения цвета с помощью colorMultiply (Color :). Просто добавьте этот модификатор в конец представления списка, и затем заполнение подтолкнет таблицу к краям устройства. Например:

List {...}.colorMultiply(Color.green).padding(.top)

https://www.hackingwithswift.com/quick-start/swiftui/how-to-adjust-views-by-tinting-and-desaturating-and-more

0 голосов
/ 13 июня 2019

Кто-то может найти это полезным, если пытается создать ячейку плавающего типа с SwiftUI, используя .listRowBackground и применяя .padding

var body: some View {
    NavigationView {
        List {
            ForEach (site) { item in
                HStack {
                    Text(String(item.id))

                    VStack(alignment: .leading) {
                        Text(item.name)
                        Text(item.crop[0])
                    }

                }.listRowBackground(Color.yellow)
                      .padding(.trailing, 5)
                      .padding(.leading, 5)
                      .padding(.top, 2)
                      .padding(.bottom, 2))
            }
        }
            .navigationBarTitle(Text("Locations"))
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...