Eu tentei isso, mas não sabia como usar os resultados em um SwiftUI View:
func getProfilePicture(_ completion: @escaping ((UIImage) -> Void)) {
Alamofire.request(GIDSignIn.sharedInstance()?.currentUser.profile.imageURL(withDimension: 75) ?? "https://httpbin.org/image/png").responseImage { response in
if let image = response.result.value {
completion(image)
}
}
}
Se você puder ajudar, gostaria de colocar a imagem retornada do manipulador de conclusão nesta visualização:
struct ProfileView: View {
let profileInfo = ProfileInfo()
var placeHolderImage = Image(systemName: "person")
var body: some View {
Group {
placeHolderImage
.clipShape(Circle())
.overlay(
Circle().stroke(Color.white, lineWidth: 4))
.shadow(radius: 10)
.padding(10)
}
}
}
Gostaria que isso retornasse um UIImage para que eu pudesse, eventualmente, usá-lo em uma visualização SwiftUI. Já tentei usar um método com um manipulador de conclusão @escaping, mas não consegui descobrir como usá-lo para corrigir o problema. Obrigado!
Você pode tentar algo, deixe isto:
struct ProfileView: View {
@State var placeHolderImage = Image(systemName: "person")
var body: some View {
Group {
placeHolderImage
.clipShape(Circle())
.overlay(
Circle().stroke(Color.white, lineWidth: 4))
.shadow(radius: 10)
.padding(10)
}.onAppear{
getProfilePicture{ image in
self.placeHolderImage = Image(uiImage: image)
}
}
}
}
Quando ProfileView
aparecer ele vai ligar getProfilePicture
. O image
especificado em image in
(ao chamar a função) é o que o manipulador de conclusão passa ( completion(image)
). O que você pode fazer é mudar o placeHolderImage
que você entra getProfilePicture
, mas antes de fazer isso, você precisa transformar o seu uiImage
em um Image
. Além disso, certifique-se de adicionar a @State
palavra-chave à sua variável para que, assim que mudar, seu View
seja atualizado.
Espero que ajude!
Este artigo é coletado da Internet.
Se houver alguma infração, entre em [email protected] Delete.
deixe-me dizer algumas palavras