iphone – 正确使用transitionFromViewController:toViewController:duration:options:animations:completion:

iphone – 正确使用transitionFromViewController:toViewController:duration:options:animations:completion:,第1张

概述我似乎找不到一个很好的例子如何使用transitionFromViewController:toViewController:duration:options:animations:completion:正确。 它是否正确? (假设我想要交换VC与另一个) // Assume fromVC and toVC view controllers are defined and fromVC is al 我似乎找不到一个很好的例子如何使用TransitionFromVIEwController:toVIEwController:duration:options:animations:completion:正确。

它是否正确? (假设我想要交换VC与另一个)

// Assume fromVC and toVC vIEw controllers are defined and fromVC is already added as a child vIEw controller[self addChildVIEwController:toVC];[self TransitionFromVIEwController:fromVC toVIEwController:toVC duration:0.3 options:UIVIEwAnimationoptionTransitionCrossdissolve animations:NulL completion:^(BOol finished) {    [fromVC willMovetoParentVIEwController:nil];    [fromVC removeFromParentVIEwController];    [toVC dIDMovetoParentVIEwController:self];}];

文档不清楚什么时候调用什么:

The addChildVIEwController: method calls the
willMovetoParentVIEwController: method of the vIEw controller to be
added as a child before adding it,but it does not call the
dIDMovetoParentVIEwController: method. The container vIEw controller
class must call the dIDMovetoParentVIEwController: of the child vIEw
controller after the Transition to the new child is complete or,if
there is no Transition,immediately after calling the
addChildVIEwController: method.

likewise,it is is the responsibility of the container vIEw controller
to call the willMovetoParentVIEwController: method before calling the
removeFromParentVIEwController: method. The
removeFromParentVIEwController: method calls the
dIDMovetoParentVIEwController: method of the child vIEw controller.

另一件事是,在这种情况下你如何使用动画块?注意在上面的代码中我只是把NulL。 (我熟悉块本身,我只是不知道什么放在这一个)

解决方法 我在过去类似地实现了这种事情。但是,我会移动-willMovetoParentVIEwController:在完成块之外,因为该视图控制器应该在它被移动之前通知(即,到完成块运行时,从VC已经将其父VC设置为nil。 ,像这样:

[self addChildVIEwController:toVC];[fromVC willMovetoParentVIEwController:nil];[self TransitionFromVIEwController:fromVC toVIEwController:toVC duration:0.3 options:UIVIEwAnimationoptionTransitionCrossdissolve animations:^{} completion:^(BOol finished) {    [fromVC removeFromParentVIEwController];    [toVC dIDMovetoParentVIEwController:self];}];

就动画而言,根据方法文档,不应将此参数设置为NulL。如果你没有想要动画的视图属性,那么你可以简单地传递一个空块^ {}。基本上,此参数用于在转换期间在视图层次结构中为视图的属性设置动画。动画属性的列表可以在the UIView documentation的“动画”标题下找到。例如,假设您不希望您的整个视图由来处理以交叉解散,但只需要其名为subvIEw1的视图层次中的一个子视图淡出。您可以使用动画块:

[self addChildVIEwController:toVC];[fromVC willMovetoParentVIEwController:nil];[self TransitionFromVIEwController:fromVC                   toVIEwController:toVC                          duration:0.3                           options:UIVIEwAnimationoptionTransitionNone                        animations:^{                                       [subvIEw1 setAlpha:0.0];                                   }                        completion:^(BOol finished) {                                       [fromVC removeFromParentVIEwController];                                       [toVC dIDMovetoParentVIEwController:self];                                   }];
总结

以上是内存溢出为你收集整理的iphone – 正确使用transitionFromViewController:toViewController:duration:options:animations:completion:全部内容,希望文章能够帮你解决iphone – 正确使用transitionFromViewController:toViewController:duration:options:animations:completion:所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1087490.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存