Hero icon indicating copy to clipboard operation
Hero copied to clipboard

Over fullscreen transitions persist snapshots

Open ktan17 opened this issue 5 years ago • 2 comments

What did you do?

When using a full screen Hero transition which scales a UIImageView to the size of the full-screen (transitioning to another view controller), the snapshot used during the transition remains in the view hierarchy post-animation. This is caused by the following code in HeroTransition+Complete:

if finished && isPresenting && toOverFullScreen {
   // finished presenting a overFullScreen VC
  context.unhide(rootView: toView)
  context.removeSnapshots(rootView: toView)
  context.storeViewAlpha(rootView: fromView)
  fromViewController?.hero.storedSnapshot = container
  container.superview?.addSubview(fromView)
**fromView.addSubview(container)
} else if !finished && !isPresenting && fromOverFullScreen {
  // cancelled dismissing a overFullScreen VC
  context.unhide(rootView: fromView)
  context.removeSnapshots(rootView: fromView)
  context.storeViewAlpha(rootView: toView)
  toViewController?.hero.storedSnapshot = container
  container.superview?.addSubview(toView)
**toView.addSubview(container)
}

Normally, this is okay; however, if the background of the presented view controller (and its subviews) are made transparent, then you can see the snapshot behind it. I believe this is the same issue outlined in https://github.com/HeroTransitions/Hero/issues/518.

What did you expect to happen?

The snapshot should not be visible. I'm not sure for what purpose it needs to be there, but perhaps a property can added to hide it. When commenting out the asterisked lines above, the transition still works properly and the snapshot is hidden.

General Information

  • Hero Version: 1.5.0

  • iOS Version(s): 13.7

  • Swift Version: 5

  • Devices/Simulators: 8 and 11

ktan17 avatar Sep 09 '20 16:09 ktan17

Found a solution. Commented here: https://github.com/HeroTransitions/Hero/issues/289#issuecomment-705248194

ThoseGuysInTown avatar Oct 07 '20 23:10 ThoseGuysInTown