как программно установить заполнитель для изображений в окне выбора - PullRequest
0 голосов
/ 21 мая 2019

У меня есть 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
}

Я ожидаю, что изображения-заполнители для всех изображений, которые отображаются в окне выбора

Ответы [ 2 ]

0 голосов
/ 21 мая 2019

Я использовал Kingfisher , который позволяет кэшировать и делать множество твиков и опций для разработки, Чтобы установить заполнитель для imageView, это просто в Kingfisher, вам просто нужно импортировать Kingfisher и кодировать следующую строку.

//placeholder image
let image = UIImage(named: "default_profile_icon")
//imageview to set image via url
imageView.kf.setImage(with: url, placeholder: image) 
0 голосов
/ 21 мая 2019

Сначала назначьте изображение по умолчанию. Затем получите изображение из кеша. Пока изображение загружено с сервера или извлечено из кэша, локальное изображение по умолчанию будет отображаться

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
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...