在viewController swift上,UIImage显示晚了2-3秒

时间:2017-09-20 01:54:18

标签: ios swift firebase uiimageview uiimage

我有一个用于用户个人资料照片的UIImageView。但是,图像在屏幕上显示为晚到2到3秒。我是这样下载的:

@IBAction func sliderValueChanged(_ sender: UISlider) {
    rate.text = String(round(sliderrate.value))
}

我该如何解决这个问题?

2 个答案:

答案 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)