Разбиение выражения на отдельные подвыражения в ForEach / ZStack (SwiftUI) - PullRequest
0 голосов
/ 02 ноября 2019

У меня небольшая проблема с последним SwiftUI, ошибка: «Компилятор не может проверить это выражение в разумные сроки; попробуйте разбить выражение на отдельные подвыражения»

Мой кодэто так:

let cards = ["Azertyuiop", "Bzertyuiop", "Czertyuiop", "Dzertyuiop", "Ezertyuiop", "Fzertyuiop", "Gzertyuiop", "Hzertyuiop", "Izertyuiop", "Jzertyuiop", "Kzertyuiop", "Lzertyuiop", "Bzertyuiop", "Czertyuiop", "Dzertyuiop", "Ezertyuiop", "Fzertyuiop", "Gzertyuiop", "Lzertyuiop", "Bzertyuiop", "Czertyuiop", "Dzertyuiop", "Ezertyuiop", "Fzertyuiop", "Gzertyuiop", "Lzertyuiop", "Bzertyuiop", "Czertyuiop", "Dzertyuiop", "Ezertyuiop", "Fzertyuiop", "Gzertyuiop"]
   var body: some View {
       ScrollView{
         VStack (spacing: 0, content: {
           ForEach(0..<cards.count/3) { row in // create number of rows
               HStack (spacing: 0, content: {
                   ForEach(0..<3) { column in // create 3 columns
                     ZStack(alignment: .bottomLeading){
                        Image("ghost").resizable().aspectRatio(contentMode: .fill)
                           .overlay(Rectangle().fill (LinearGradient(gradient: Gradient(colors: [.clear, .black]),startPoint: .center, endPoint: .bottom)).clipped())
                        Text(self.cards[row * 3 + column]) // this cause the error
                           .fontWeight(.semibold)
                     }
                   }
               })
            }
         })
       }
   }

Я предполагаю, что ошибка исходит из: строки * 3 + столбец

Поэтому я попытался поставить целое число 1 вместо этого вычисления, и это сработало. Как сделать этот расчет в моем теле и моем виде? потому что SwiftUI не позволяет мне и показывает «Ожидаемый образец»

Большое спасибо!

1 Ответ

1 голос
/ 03 ноября 2019

Есть две проблемы. Один использует ZStack с наложением, другой - Линейный градиент - это представление, и вы можете использовать его напрямую.

 ZStack(alignment: .bottomLeading){
                Image("ghost").resizable().aspectRatio(contentMode: .fill)
                LinearGradient(gradient: Gradient(colors: [.clear, .black]),startPoint: .center, endPoint: .bottom).clipped()
                Text(self.cards[row * 3 + column]) // this cause the error
                    .fontWeight(.semibold)

              }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...