首页 > 解决方案 > 如何使用swift以编程方式在选择器视图中为图像设置占位符

问题描述

我有一个pickerview显示图像的。我从缓存中挑选图像,所以需要一些时间。我希望当没有从缓存加载图像时,我的本地图像在那里显示为占位符图像。当从缓存加载图像时,它会显示图像。我是 ios 开发的新手,所以我不确定如何在选取器视图中将图像显示为占位符。如果有人有任何想法,请告诉我。

我试图在viewForRow从缓存中获取图像之前设置图像功能。但它不起作用。

myImageView.image = UIImage(named:"no-image")
myImageView = UIImageView(image : UIImage(named: "imagename"))

func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
    let carrier = self.carriers.object(at: row) as! NSDictionary
    vehicleName = carrier.value(forKey: kcarrierName) as! String
    vehicleID = carrier.value(forKey: kId) as! Int
    self.vehicleType.text = vehicleName
    self.currentVehicle.text = vehicleName
    self.truckType = self.vehicleType.text!
    self.truckType = self.currentVehicle.text!
}

func pickerView(_ pickerView: UIPickerView, viewForRow row: Int, forComponent component: Int, reusing view: UIView?) -> UIView {
    let carrier = self.carriers.object(at: row) as! NSDictionary
    vehicleImage = carrier.value(forKey: kImage) as! String
    let viewForImage = UIView()
    var myImageView = UIImageView()
    self.rotAngle = 90 * (.pi/180)
    myImageView.frame = CGRect(x : 0, y : 0, width: 90, height: 90)
    myImageView.cacheImage(urlString: vehicleImage)
    myImageView.transform = CGAffineTransform(rotationAngle: self.rotAngle)
    return myImageView
}

我希望选择器视图中显示的所有图像的占位符图像

标签: swift

解决方案


首先分配默认图像。然后从缓存中获取图像。直到图片从服务器下载或从缓存中获取,将显示默认的本地图片

func pickerView(_ pickerView: UIPickerView, viewForRow row: Int, forComponent component: Int, reusing view: UIView?) -> UIView {
    let carrier = self.carriers.object(at: row) as! NSDictionary
    vehicleImage = carrier.value(forKey: kImage) as! String
    let viewForImage = UIView()
    var myImageView = UIImageView()
    self.rotAngle = 90 * (.pi/180)
    myImageView.frame = CGRect(x : 0, y : 0, width: 90, height: 90)
    myImageView.image = UIImage(named:"no-image")
    myImageView.cacheImage(urlString: vehicleImage)
    myImageView.transform = CGAffineTransform(rotationAngle: self.rotAngle)
    return myImageView
}

推荐阅读