在ForEach / ZStack(SwiftUI)中将表达式分解为不同的子表达式

时间:2019-11-02 19:30:36

标签: swift xcode swiftui

在最新的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 个答案:

答案 0 :(得分:1)

有两个问题。一种是使用带有叠加层的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)

              }