美文网首页
SwiftUI3 SDWebImageSwiftUI简单使用

SwiftUI3 SDWebImageSwiftUI简单使用

作者: Johnson_9d92 | 来源:发表于2022-02-04 20:44 被阅读0次

SwiftUI3 SDWebImageSwiftUI简单使用

simpleExample

import SwiftUI
struct SimpleExample: View {
    let url: URL?
    @State private var data: Data?
    private var image: UIImage?{
        if let  data = self.data { return UIImage(data: data) }
        return nil
    }
    var body: some View {
        let image = self.image
         return Group{
            if image != nil {
                Image(uiImage: image!)
                    .resizable()
                    .scaledToFill()
                    .cornerRadius(15)
                    
            }else{
                Color.gray
            }
        }
         .frame(height: 600)
         .frame(width: UIScreen.main.bounds.width  - 30)
         .clipped()
         .cornerRadius(25)
         .onAppear {
             if let url = self.url, self.data == nil {
                 DispatchQueue.global().async {
                     let data = try? Data(contentsOf: url)
                     DispatchQueue.main.async {
                         self.data = data
                     }
                 }
                 
             }
         }
        
    }
}

SDWebImage

import SwiftUI
import SDWebImageSwiftUI
struct WebImageExample: View {
    let url: URL?
    var body: some View {
        WebImage(url: url)
            .placeholder{
                Color.gray
            }
            .resizable()
            .onSuccess(perform: { _, _ , _ in
                debugPrint("success")
                SDWebImageManager.shared.imageCache.clear(with: .all, completion: nil)
            })
            .onFailure(perform: { _ in
                debugPrint("error")
            })
            .scaledToFill()
            .frame(height: 600)
            .frame(width: UIScreen.main.bounds.width  - 30)
            .clipped()
            .cornerRadius(15)
        
    }
}

主页:

import SwiftUI
let url1 = URL(string: "https://pics4.baidu.com/feed/4bed2e738bd4b31cb23f16a5d819e0769f2ff882.jpeg?token=5c27800ab2529ec85d2819ea8a0c1669")
struct ContentView: View {

    var body: some View {
        NavigationView{
            List{
                ForEach(1...60,id:\.self){ _ in
                    NavigationLink {
                        SimpleExample(url: url1!)
                    } label: {
                        Text("Simple Example")
                    }
                    
                    NavigationLink {
                        WebImageExample(url: url1)
                    } label: {
                        Text("Web Example")
                    }
                }
//                .listRowInsets(EdgeInsets())
                
            }
            .listStyle(.plain)
            .frame(maxWidth: UIScreen.main.bounds.width)
//            .navigationBarHidden(true)
            .navigationTitle("测试SDWebImage框架")
//            .navigationBarTitleDisplayMode(.inline)
//            .navigationBarHidden(true)
            .navigationViewStyle(.stack)
        }
    }
}

相关文章

网友评论

      本文标题:SwiftUI3 SDWebImageSwiftUI简单使用

      本文链接:https://www.haomeiwen.com/subject/ymwskrtx.html