Im Moment gibt es keine Möglichkeit, es dem UIImageView hinzuzufügen und gleichzeitig Apples Parallax-Effekt zu erhalten.
Sie müssen entweder den Effekt entweder programmatisch implementieren oder CGContext verwenden, um das Bild und ein Banner darüber zu zeichnen.
Ich mache das letztere, abgerundete Bilder in einer CollectionViewCell zu haben, während auch Apples Parallax-Effekt beibehalten wird. Das sieht ein bisschen wie folgt aus:
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
}
}
}
}
Stellen Sie sicher, Sachen zu einem Hintergrund-Thread zu bewegen, wenn erforderlich, und dass eine Zelle durch die Zeit, ein Bild wiederverwendet worden sein könnte geladen. Fügen Sie also einen Check innerhalb des loadImage Completion Handlers für eine eindeutige ID hinzu.
Sie können diesen Effekt auch programmgesteuert implementieren. –
Ich würde gerne sehen, ob es eine kürzere, einfachere Lösung gibt. Die programmatische Umsetzung des Effekts wird mein letzter Ausweg sein. –
@AndraTodorescu können Sie den Code Ihrer endgültigen Lösung veröffentlichen? Ich habe das gleiche Problem –