Как упростить этот код SwiftUI, использующий циклы ForEach для рисования сетки - PullRequest
0 голосов
/ 31 марта 2020

iOS 13, Swift 5.

** РЕШЕНО см. Комментарий **

Попытка реализовать это весь день. Я думаю, что мне может понадобиться более быстрый компьютер. Продолжайте получать сообщение об ошибке. Компилятор не может проверить это выражение в разумные сроки; попробуйте разбить выражение на отдельные подвыражения.

Как мне это упростить? Код рисует сетку и, в зависимости от значений в массиве textColors, рисует блоки разными цветами. Это не так сложно ... но это вне меня.

 VStack(alignment: .center, spacing: 5) {
        ForEach((0 ..< 4).reversed(), id: \.self) { row in
            HStack(alignment: .center, spacing: 5) {
                ForEach((0 ..< 4).reversed(), id: \.self) { column in
                   VStack {
                    if textColors[(column + (row*4))] != Color.clear {
                       Text(self.textText[(column + (row*4))])
                      .font(Fonts.futuraCondensedMedium(size:48))
                      .frame(width: 64, height: 64, alignment: .center)
                      .background(Color.red)
                    } else {
                      Text(self.textText[(column + (row*4))])
                      .font(Fonts.futuraCondensedMedium(size:48))
                      .frame(width: 64, height: 64, alignment: .center)
                      .background(InsideView(rect: self.$rect))
                    }
                  }
                }
            }
        }
    }

Я пытался создать представления в методе ForEach, но безрезультатно. Циклы ForEach в SwiftUI болезненны. Действительно больно.

Проблема в выражении (колонка + (строка * 4)), которое кажется слишком большим для Xcode! И все же SwiftUI не позволит мне сделать этот расчет где-либо еще в этом блоке кода.

...