Прямо сейчас нет возможности добавить его в UIImageView, одновременно получая эффект параллакса от Apple.
Значит, вам нужно либо реализовать эффект программно, либо использовать CGContext для рисования изображения и баннера поверх него.
Я делаю последнее, чтобы иметь округленные изображения в коллекцииViewCell, одновременно сохраняя собственный эффект параллакса Apple. Это своего рода выглядит следующим образом:
imageView.sd_setImage(with: URL(string:url), placeholderImage: UIImage(named: "placeholder"), options: SDWebImageOptions.avoidAutoSetImage) { [weak self] (image, error, cacheType, url) in
if let image = image {
if let strongself = self {
UIGraphicsBeginImageContext(strongself.imageView.frame.size)
if let ctx = UIGraphicsGetCurrentContext() {
let layer = CALayer()
layer.frame = CGRect(origin: CGPoint(x: 0, y: 0), size: strongself.imageView.frame.size)
layer.cornerRadius = 8
layer.masksToBounds = true
layer.contentsGravity = "resizeAspectFill"
layer.contents = image.cgImage
layer.render(in: ctx)
let processedImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
strongself.imageView.image = processedImage
}
}
}
}
Убедитесь, чтобы переместить материал в фоновом поток, когда это необходимо, и что клетка может быть повторно к тому времени изображения загружено. Поэтому добавьте проверку внутри обработчика завершения loadImage для уникального идентификатора.
Вы также можете реализовать этот эффект программно. –
Я хотел бы посмотреть, есть ли более короткое и легкое решение. Внедрение эффекта программно будет моим последним средством. –
@ AndraTodorescu Вы могли бы опубликовать код своего окончательного решения? Я столкнулся с той же проблемой –