这就是我想要的静态图像的视图设计:

this is what I want this view design for static images

我想设计一个具有旋转效果的视图,每个视图都有不同程度的旋转

[-10,10,0]

此数组并设置为图像.图片来自Api.

这就是我的做法

struct Stacks: View{
    @State var rotate: [Int] = [-10, 10, 0]
    @State var index: Int = -1
    @StateObject var list = StacksViewModel()
    var body: some View{
        VStack{
        ForEach(list.datas, id: \.id){ item in
               ZStack{
                ForEach(item.stack_book_link, id: \.id){ images in
                    
                        AsyncImage(url: URL(string: images.book_url))
.frame(width: 125, height: 135)
.rotationEffect(Angle(degrees: Double(rotate[ self.index + 1])))  
                    }
                }
                
            }
        }
        .onAppear{
            list.getStacksData()
        }
    }
}

推荐答案

这是您要展示的主视图.

struct Stacks: View{
     @State var rotate: [Int] = [-20, 20, 0]
           @State var index: Int = -1
           @StateObject var list = StacksViewModel()
           
           var body: some View{
               VStack(spacing: 35){
                   ForEach(list.datas, id: \.id) { item in
                       ZStack{
                           ForEach(item.stack_book_link.indices, id: \.self) { index in
                               AsyncImage(url: URL(string: item.stack_book_link[index].book_url)){ img in
                                   img.resizable().frame(width: 125, height: 155)
                                       .rotationEffect(Angle(degrees: Double(rotate[ index])))
                                       .shadow(radius: 5)
                               }placeholder: {
                                   Image("u").resizable().frame(width: 125, height: 155).rotationEffect(Angle(degrees: Double(rotate[ index])))
                                       .shadow(radius: 5)
                               }
    
                           }
                       }
                   }
               }
               .onAppear{
                   list.getStacksData()
               }
           } 
    }

这是ViewModel.

class StacksViewModel: ObservableObject{
   
    @Published var datas = [StacksDatum]()
    @Published var image: [String] = []
   
    func getStacksData() {
        
        let defaults = UserDefaults.standard
        guard let token = defaults.string(forKey: "access_token") else {
            return
        }
        //Give authentication(StacksService()) and then fetching data 
        StacksService().getStacksData(token: token){ (result) in
            switch result {
                case .success(let results):
                    DispatchQueue.main.async {
                        self.datas = results.studentStacks.data
                        
                        for data in self.datas {
                            for imgdata in data.stack_book_link{
                                self.image.append(imgdata.book_url)
                            }
                            
                        }
                        print(self.datas)
                    }
                case .failure(let error):
                    print(error.localizedDescription)
            }
        }
    }
      
}

在我这边,它显示得非常正确.我的系统Xcode 14.1和iOS 15.StacksService()是一个类,它提供用户是否通过身份验证的身份验证.

Swift相关问答推荐

为什么Swift在某些链调用中不能对不可变值使用变异成员,而在其他链调用中则不能使用变异成员?

SwiftUI - NavigationLink(value:)和navigationDestination不工作

如何在自定义视图中读取修改符子元素?

将`@Environment`值赋给`Binding`参数

如何让ScrollView缩小到合适的大小,并在没有黑客攻击的情况下占用最小空间

了解SWIFT中的命名VS位置函数调用

无法创建MKAssociateRegion对象

从SwiftUI使用UIPageView时,同一页面连续显示两次的问题

swift:只要框架名称中有一个带有框架名称的公共实体,就指定框架中公共 struct 的路径

BLE 在 ESP32 和 Iphone 之间发送字符串

Swift Property Wrappers-Initialization 失败并显示无法将‘Double’类型的值转换为预期的参数类型

从 iPhone 中的安全飞地获取真正的随机数?

swift 是否遇到 Java 的 2gb 最大序列化大小问题?

Swift:withCheckedContinuation 和 Dispatch QoSClass

AVPlayer 在 iOS 15.4 中寻求 completionHandler 返回 false

在 Swift 中从 HTML 生成带有图像的 PDF 而不显示打印界面

快速的 AES 加密

在 Swift 中获取双精度的小数部分

协议扩展中的where self是什么

TabView 在切换选项卡时重置导航堆栈