// // UserPhoto.swift // fiveConstant // // Created by 李建 on 2023/1/30. // import SwiftUI import SwiftyUserDefaults struct UserPhoto: View { var baseUrl: String = "http://yongxu.yehaoji.cn:18199" @State var image:UIImage = UIImage() @Binding var url: String @StateObject var imageLoader: ImageLoader = ImageLoader() var body: some View { Image(uiImage: image) .resizable() .aspectRatio(contentMode: .fit) .clipShape(Circle()) .edgesIgnoringSafeArea(.top) .onReceive(imageLoader.didChange) { data in self.image = UIImage(data: data) ?? UIImage() } .onChange(of: url, perform: { value in imageLoader.loadImage(urlString: "\(baseUrl)\(value)") }) .onAppear { imageLoader.loadImage(urlString: "\(baseUrl)\(Defaults[\.photo] ?? "")") } } } struct UserPhoto_Previews: PreviewProvider { @State static var urlStr: String = "http://yongxu.yehaoji.cn:18199/s/yongxu/1t7svi0azn0cplrmpse4x6s2b0cq6q7v/cropped9206103138767981437.jpg" static var previews: some View { UserPhoto(url: $urlStr) } }