【问题标题】:Need help in position images when view going back into place using当视图回到原位时需要帮助定位图像
【发布时间】:2021-10-06 02:59:32
【问题描述】:

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

https://github.com/DJSimonSays93/PresentationController

它涉及使用 present 和委托 UIViewControllerTransitioningDelegateUIViewControllerAnimatedTransitioning

的自定义视图控制器转换

【问题讨论】:

  • 那里发生了很多事情...如果您可以将minimal reproducible example 放在一起并将其发布到 GitHub 之类的地方,那么您可能会获得更好的帮助
  • 感谢@DonMag 将对此进行调查
  • @DonMag 我编辑了我的评论并提供了一个 GitHub 存储库。希望这会有所帮助。

标签: ios swift animation uiview uiviewcontroller


【解决方案1】:

“问题”很简单,现在让我看看我是否可以用语言来描述它。

您有两个图像视图,例如显示 basil 图像:一个在滚动视图中,一个在您呈现时全屏显示。它们都设置为 Aspect Fill。但是这两个图像视图的纵横比本身不同。因此,为了在 Aspect Fill 中显示在不同的图像视图中,图像移动它的显示方式。

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

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

  • 当您点击全屏图像时,会应用变换(动画),然后在图像视图被带走以显示其后面的旧图像视图时跳转

如果您将两个图像视图都设置为 Scale To Fill,则不会发生这种情况。当然,图像也会出现失真,但它是相同的失真,因此图像在整个过程中看起来会平滑地增长和收缩。试试看,你至少会对我所说的感觉感到满意。

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

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

关键是,您不能在具有不同纵横比的图像视图中使用 Aspect Fill 显示相同图像,并期望图像在两者中以相同方式显示。图像需要不同(以进行补偿)或纵横比需要相同。

【讨论】:

    猜你喜欢
    • 2015-12-20
    • 1970-01-01
    • 2013-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-14
    • 1970-01-01
    • 2021-02-01
    相关资源
    最近更新 更多