From f07a66f61894d2dac19595266675c34719341878 Mon Sep 17 00:00:00 2001 From: Eric Jensen Date: Tue, 28 May 2024 14:02:42 -0400 Subject: [PATCH] Correct the fade transition when content modes differ Previously runCrossDissolveWithContentMode was adding the transitionView to the imageView and settting the imageViews alpha to 0. This resulted in the image immediately disappearing since alpha of subviews are multiplied by the alpha of parent views. --- Sources/NukeExtensions/ImageViewExtensions.swift | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/Sources/NukeExtensions/ImageViewExtensions.swift b/Sources/NukeExtensions/ImageViewExtensions.swift index 805b6787e..4d1665cde 100644 --- a/Sources/NukeExtensions/ImageViewExtensions.swift +++ b/Sources/NukeExtensions/ImageViewExtensions.swift @@ -400,7 +400,7 @@ extension ImageViewController { ) } - /// Performs cross-dissolve animation alonside transition to a new content + /// Performs cross-dissolve animation alongside transition to a new content /// mode. This isn't natively supported feature and it requires a second /// image view. There might be better ways to implement it. private func runCrossDissolveWithContentMode(imageView: UIImageView, image: ImageContainer, params: ImageLoadingOptions.Transition.Parameters) { @@ -410,8 +410,12 @@ extension ImageViewController { // Create a transition view which mimics current view's contents. transitionView.image = imageView.image transitionView.contentMode = imageView.contentMode - imageView.addSubview(transitionView) - transitionView.frame = imageView.bounds + imageView.superview?.insertSubview(transitionView, aboveSubview: imageView) + transitionView.frame = imageView.frame + transitionView.clipsToBounds = imageView.clipsToBounds + transitionView.layer.cornerRadius = imageView.layer.cornerRadius + transitionView.layer.cornerCurve = imageView.layer.cornerCurve + transitionView.layer.maskedCorners = imageView.layer.maskedCorners // "Manual" cross-fade. transitionView.alpha = 1