我有一个用于用户个人资料照片的UIImageView。但是,图像在屏幕上显示为晚到2到3秒。我是这样下载的:
@IBAction func sliderValueChanged(_ sender: UISlider) {
rate.text = String(round(sliderrate.value))
}
我该如何解决这个问题?
答案 0 :(得分:0)
您运行的代码在不同的线程上运行,根据 Apple ,所有UI更新都必须在主线程上运行。这里有link,解释了为什么所有UI更新必须在主线程
上因此,在您的代码中,您只需使用DispatchQueue
这样的
DispatchQueue.main.async {
// please don't use implicit unwrapping of variables `data!` cause it may cause crashes, use if let statements instead
if let data = data {
let userPhoto = UIImage(data: data)
self.ProfilePic.image = userPhoto
}
}
另一方面:
请阅读此Swift
中的link编码标准答案 1 :(得分:0)
我实际解决了它,如果像我这样的新手遇到同样的问题,我会在这里发布。我使用了Firebase和SDWebImage。这是 link 这是来自Firebase的官方网站。
// Reference to an image file in Firebase Storage
let reference = storageRef.child("images/stars.jpg")
// UIImageView in your ViewController
let imageView: UIImageView = self.imageView
// Placeholder image
let placeholderImage = UIImage(named: "placeholder.jpg")
// Load the image using SDWebImage
imageView.sd_setImage(with: reference, placeholderImage: placeholderImage)