【问题标题】:+[UIView transitionFromView:toView:...] with multiple views+[UIView transitionFromView:toView:...] 有多个视图
【发布时间】:2014-10-30 09:37:17
【问题描述】:

所以情况是这样的:

假设有 20 个视图都是同一视图的子视图。现在我想在动画中删除和添加新视图。 我以前通过使用常规 UIView 动画并分别淡出或淡入来做到这一点。问题在于,当要插入的新子视图与淡出的子视图重叠时,动画并非完美无缺。所以我尝试使用+[UIView transitionFromView:toView:...] 动画块来使动画交叉溶解。这很好用,动画看起来不错。 这基本上解决了我的问题。唯一的问题是我可能想用一个更大的子视图替换 2 个子视图。这并没有真正奏效,因为我不能只将nil 传递给转换方法。

所以我的问题基本上是,无论动画有多少视图,我如何同时交叉溶解多个子视图?

感谢您的帮助!

【问题讨论】:

    标签: ios objective-c cocoa-touch animation uiview


    【解决方案1】:

    您是否尝试过将要删除的视图放入透明的大视图中?所以你只需使用容器调用transitionFromViewToView,里面有2个小容器和正在进入的大容器?

    【讨论】:

    • 我确信这会起作用,但在我的情况下也会相当复杂。我想我还是更喜欢不太完美的动画而不是如此复杂的解决方案。
    【解决方案2】:

    您可以使用+ [UIView transitionWithView:duration:options:animations:completion:],传递通用的超级视图(通常是您的视图控制器的self.view)来一次执行所有动画。

    摘自文档:

    此方法将过渡应用于指定视图,以便您可以 对其进行状态更改。您在动画中指定的块 参数包含您想要进行的任何状态更改。 你可以 使用此块添加、删除、显示或隐藏指定的子视图 如果您想合并其他动画更改,您必须 将 UIViewAnimationOptionAllowAnimatedContent 键包含在 选项参数。

    【讨论】:

    • 我知道这种方法,但如果我认为这不是我想要的。此方法为超级视图设置动画,因此,除非我犯了错误,否则它会为每个视图设置动画,而不仅仅是我在块中添加/删除的视图。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-10
    • 1970-01-01
    • 2014-02-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多