Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/97.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何在视图出现后准确启动核心动画?_Ios_Uiviewcontroller_Uinavigationcontroller_Uiscrollview_Core Animation - Fatal编程技术网

Ios 如何在视图出现后准确启动核心动画?

Ios 如何在视图出现后准确启动核心动画?,ios,uiviewcontroller,uinavigationcontroller,uiscrollview,core-animation,Ios,Uiviewcontroller,Uinavigationcontroller,Uiscrollview,Core Animation,我正在尝试在视图循环的精确时刻为层设置动画。比方说,动画是一个简单的淡入(应用于不透明度关键点的CABasicAnimation)。但我不知道如何确保只有在确定包含的视图(和层)可见时,才开始CALayer上的动画 2个示例案例: 仅在容器视图(和 此层)已对用户可见,以响应 superview的控制器被推入导航控制器的 堆栈也就是说,仅在动画和viewController->view之后 由[navigationController:x]触发的安装程序 动画:是];已完成,并且viewCont

我正在尝试在视图循环的精确时刻为层设置动画。比方说,动画是一个简单的淡入(应用于不透明度关键点的CABasicAnimation)。但我不知道如何确保只有在确定包含的视图(和层)可见时,才开始CALayer上的动画

2个示例案例:

  • 仅在容器视图(和 此层)已对用户可见,以响应 superview的控制器被推入导航控制器的 堆栈也就是说,仅在动画和viewController->view之后 由[navigationController:x]触发的安装程序 动画:是];已完成,并且viewController的视图为 已经看得见了

  • 只有在用户通过滚动条滚动后,才能淡入该层 通过分页查看,转到某个页面。也就是说,用户滚动到第n页 (每个页面都是滚动视图的子视图)并且仅在新的 页面已滚动到内容视图的中心,是否 动画开始

  • 这有点像,一旦翻开“书”的一页,就开始制作动画,以便在每一页上讲述一个故事


    有道理吗

    我发现了两种情况:

    对于第一种情况,动画代码需要在ViewDidDisplay中:关键是将动画包含在CATTransaction中。出于某种原因,如果没有显式事务,动画似乎无法执行

    第二个示例非常类似,只是在scrollview的delegate DiEndDecelling方法中添加了CATTransaction:

    - (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
    {
      int pageNumber = floor(self.scrollView.contentOffset.x / self.scrollView.frame.size.width);
      if(pageNumber == n)
      {
        [CATransaction begin];
        ...