我正在尝试在视图循环期间的确切时刻为图层设置动画。例如,假设动画是一个简单的淡入(应用于不透明度键的CABasicAnimation)。但我无法确定如何确保我的动画在CALayer上只有在我确定包含的视图(和图层)可见时才开始。
2个案例:
在容器视图(和超级层)之后,仅在淡入淡出层 这个层已经被用户看到,以响应 superview的控制器被推入导航控制器' 堆。也就是说,仅在动画和viewController->视图之后 由[navigationController pushViewController:x触发的设置 动画:YES];已经完成并且viewController的视图是 已经可见。
仅在用户滚动后通过滚动淡化图层 查看分页,到某个页面。也就是说,用户滚动到页面n (并且每个页面都是滚动视图的子视图)并且仅在新视图之后 页面已滚动到内容视图的中心,执行 动画开始。
有点像,一旦翻开“书籍”页面就开始制作动画,以便在每一页上讲述一个故事。
有道理吗?
答案 0 :(得分:1)
我想出了两个案例:
对于第一种情况,动画代码需要在viewDidAppear中:关键是将动画包含在CATransaction中。出于某种原因,没有显式事务,动画似乎没有。
第二个例子非常相似,只有那个会在scrollview的委托DidEndDecelerating方法中添加CATransaction:
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
int pageNumber = floor(self.scrollView.contentOffset.x / self.scrollView.frame.size.width);
if(pageNumber == n)
{
[CATransaction begin];
...