菜鸟教程小白 发表于 2022-12-12 19:52:20

ios - 使用 UIViewControllerTransitionCoordinator animateAlongsideTransition 方法


                                            <p><p>我有一个 ViewController 可以说 <code>ViewControllerA</code> 和一个 ViewController 可以说 <code>ViewControllerB</code>。</p>

<p><code>ViewControllerB</code> 使用自定义转换从 <code>ViewControllerA</code> 模态呈现。</p>

<p>在 ViewControllerA 中:</p>

<pre><code>-(void)buttonClicked...
{
ViewControllerB * controller = [ init];
;
controller.transitioningDelegate = self;
;
}
</code></pre>

<p>在 ViewControllerA 中 -</p>

<pre><code>#pragma mark - UIViewControllerTransitioningDelegate

-

(id&lt;UIViewControllerAnimatedTransitioning&gt;)animationControllerForPresentedController:(UIViewController *)presented
                                                                      presentingController:(UIViewController *)presenting
                                                                        sourceController:(UIViewController *)source
{

   FadeInWithPopAnimator* fadeInAnimator = [ init];
   return fadeInAnimator;
}
</code></pre>

<p>我有一个名为 <code>FadeInWithPopAnimator</code> 的自定义 Animator 类,它实现了 transitionDuration 和 animationTransition 方法。</p>

<p>我想在呈现的 viewcontroller - <code>ViewControllerB</code> 上为几个 View 设置动画,过渡动画开始后 0.2 秒。</p>

<p>我已在线阅读文档,看起来使用 transitionCoordinator 是可行的方法。
但是我应该把代码放在哪里?</p>

<p>1) 在 <code>ViewControllerA</code> 中调用 presentViewController 时?</p>

<p>2) 在 Animator 类中?</p>

<p>3) 在 <code>ViewControllerA</code> 的 viewWillAppear 中?</p>

<p>我尝试了几件事,但没有给出结果,而且很难找到示例。</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>呈现的 ViewController 上的TransitionCoordinator 将在 ViewController 的动画开始后设置,因此在呈现的 ViewController 的 <code>viewWillAppear</code> 中。在过渡协调器上使用 <code>animateAlongsideTransition:completion:</code> 添加任何额外的动画。在您的 ViewControllerB 中:</p>

<pre><code>-(void)viewWillAppear:(BOOL)animated {
    ;

    [self.transitionCoordinator animateAlongsideTransition:^(id&lt;UIViewControllerTransitionCoordinatorContext&gt;_Nonnull context) {

      // change any properties on your views

    } completion:^(id&lt;UIViewControllerTransitionCoordinatorContext&gt;_Nonnull context) {


    }];
}
</code></pre></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 使用 UIViewControllerTransitionCoordinator animateAlongsideTransition 方法,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/37154669/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/37154669/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 使用 UIViewControllerTransitionCoordinator animateAlongsideTransition 方法