首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UIPercentDrivenInteractiveTransition对最顶层视图的限制作用

UIPercentDrivenInteractiveTransition对最顶层视图的限制作用
EN

Stack Overflow用户
提问于 2015-01-07 01:18:14
回答 3查看 662关注 0票数 1

是否有办法将UIPercentDrivenInteractiveTransition的效果限制在视图层次结构中的最顶层视图上?

具体而言:正如解释过的这里这里,交互式转换将容器视图层的speed设置为0,然后操作timeOffset以清除转换过程。

例如,如果我在包含视图的活动指示符中有一个活动指示器,则交互转换也会擦除活动指示器的旋转动画。它停止旋转,似乎与交互过渡“滚动”前后。

是否有一种方法可以本地化设置speedtimeOffset的效果,并防止它们传播到任何或所有子视图?

到目前为止,我可以想到两种可能的方法:

  1. 创建“屏障”层:子类CALayer和重写setTimeOffset:以防止或选择性地防止更改
  2. 子类或将UIPercentDrivenInteractiveTransition替换为遍历子视图层次结构并仅选择性地命中某些视图的内容。

任何其他想法都将受到欢迎。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-01-08 22:51:37

这个问题的答案是否定的。根据苹果CALayer类采用CAMediaTiming“允许层定义相对于其上层的时间空间”。换句话说,在子层中指定的任何timeOffsetbeginTime值都与上面的层相加。正如docs声明的那样,“层树时间空间的概念提供了一个可伸缩的时间线,从根层开始,通过它的后代。”

UIPercentDrivenInteractiveTransition通过在timeOffset of [transitionContext containerView].layer中进行擦除而起作用。(transitionContextid<UIViewControllerContextTransitioning>)。

因此,它正在应用一个时间偏移量,然后由子层链中的所有子层自动采用。

没有所谓的“障碍”或“选择性地只触及某些层”,因为这一次传播是由核心动画内部处理的。

票数 0
EN

Stack Overflow用户

发布于 2015-01-07 02:09:27

您应该告诉活动动画师停止动画,但在过渡期间保持它的可见性。这与苹果在其应用程序中处理这个问题的方式是一致的。例如,在Mail应用程序中,进行按需刷新以获得新消息。当指示器旋转时,使用交互式pop手势识别器大约一半。注意,活动指示符在交互转换期间停止。

票数 1
EN

Stack Overflow用户

发布于 2015-01-07 01:35:38

为什么不直接隐藏动画期间的活动指示符呢?在那里肯定没有任何意义,是吗?毕竟,这并不意味着“动画正在进行中”--用户并不认为这是一种动画,甚至不是一种耗时的过渡,而是一种由手指驱动的手势。通过使用动画的完成处理程序,可以轻松地在动画结束时再次显示它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27810013

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档