UserPhoto.swift 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. //
  2. // UserPhoto.swift
  3. // fiveConstant
  4. //
  5. // Created by 李建 on 2023/1/30.
  6. //
  7. import SwiftUI
  8. import SwiftyUserDefaults
  9. struct UserPhoto: View {
  10. var baseUrl: String = "http://yongxu.yehaoji.cn:18199"
  11. @State var image:UIImage = UIImage()
  12. @Binding var url: String
  13. @StateObject var imageLoader: ImageLoader = ImageLoader()
  14. var body: some View {
  15. Image(uiImage: image)
  16. .resizable()
  17. .aspectRatio(contentMode: .fit)
  18. .clipShape(Circle())
  19. .edgesIgnoringSafeArea(.top)
  20. .onReceive(imageLoader.didChange) {
  21. data in self.image = UIImage(data: data) ?? UIImage()
  22. }
  23. .onChange(of: url, perform: { value in
  24. imageLoader.loadImage(urlString: "\(baseUrl)\(value)")
  25. })
  26. .onAppear {
  27. imageLoader.loadImage(urlString: "\(baseUrl)\(Defaults[\.photo] ?? "")")
  28. }
  29. }
  30. }
  31. struct UserPhoto_Previews: PreviewProvider {
  32. @State static var urlStr: String = "http://yongxu.yehaoji.cn:18199/s/yongxu/1t7svi0azn0cplrmpse4x6s2b0cq6q7v/cropped9206103138767981437.jpg"
  33. static var previews: some View {
  34. UserPhoto(url: $urlStr)
  35. }
  36. }