当视图回到原位时需要帮助定位图像

Need help in position images when view going back into place using

大家好,过去几天我一直被这个问题困扰。这很难描述,所以我在 GitHub 存储库上上传了一段视频:

https://github.com/DJSimonSays93/PresentationController

它涉及使用 present 和委托 UIViewControllerTransitioningDelegateUIViewControllerAnimatedTransitioning

的自定义视图控制器转换

“问题”很简单,我看看能不能用文字描述一下。

你有两个图像视图显示罗勒图像:一个在滚动视图中,一个在你展示时是全屏视图。它们都设置为纵横比填充。但是这两个图像视图的纵横比本身 不同 。因此,为了在不同的图像视图中以纵横比填充显示,图像 会改变 的显示方式。

您在 dismiss 结束时发现这种情况的原因是您没有注意到它发生在 present 开始时,但是如果您放慢视频速度(您可以在模拟器上打开慢动画,会有帮助),你也可以在那里看到:

  • 当您在滚动视图中点击图像时,会出现 跳跃,因为图像会更改其在新图像视图中的显示,然后图像随着变换被移除(动画),视图增长到它的真实大小。

  • 当您点击全屏图像时,会应用变换(动画),然后会出现 跳跃,因为图像视图会被移走以显示它后面的旧图像视图。

如果您将两个图像视图都设置为“缩放以填充”,则不会发生这种情况。当然,图像会出现失真,但它是 相同的 失真,因此图像似乎在整个过程中平滑地增长和缩小。试一试,你至少会对我所说的感到满意。

(参见 https://www.apeth.com/stretch.gif。)

如果您不想那样做,那么您将有更多的工作要做;您将需要弄清楚如何通过更改图像的纵横比以匹配来实际 补偿 纵横比的差异。或者,您可以使全屏图像视图的目标大小与小图像视图的纵横比相匹配(其中一部分最终会在屏幕外)。

重点是,您无法在具有 不同 纵横比的图像视图中使用纵横比填充显示 相同 图像并期望图像两者都以相同的方式出现。图像需要不同(以补偿)或宽高比需要相同。