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)
}
}
}
网友评论