+ (void) AnimateSwitchingWithParent: (UIViewController *) ParentController From: (UIViewController *) From To: (UIViewController* ) To {
To.view.frame = ParentController.view.bounds;
[UIView transitionFromView:From.view toView:To.view
duration:1
options:UIViewAnimationOptionTransitionFlipFromLeft completion:NULL];
ParentController.view = To.view;
[To viewWillAppear:true];
}
这是我的函数,如果想要将视图从1视图更改为另一个视图,将调用动画,但我有问题,我有一个名为filter的viewController,在那里我有一个名为Reset的Button,它将重置所有的里面的内容 但要显示重置已完成,我想调用
[self AnimateSwitchingWithParent:self From:self To:self];
但结果是我的视图为空白。怎么会这样?任何人都有另一种方式?
答案 0 :(得分:1)
如果您在重置内容时必须翻转当前视图控制器的视图,请使用transitionWithView:duration:options:animations:completion:
方法。
示例强>
[UIView transitionWithView:self.view
duration:1.0f
options:UIViewAnimationOptionTransitionFlipFromLeft
animations:^(void) {
[self resetStuff];
}
completion:nil];
旁注
您在问题中的当前实现对于在视图层次结构中切换视图很有用。假设From.view
是ParentController.view
的子视图,则下面的语句会将From.view
替换为To.view
作为ParentController.view
的子视图。
[UIView transitionFromView:From.view toView:To.view
duration:1
options:UIViewAnimationOptionTransitionFlipFromLeft completion:NULL];
你绝对不需要这样做,
ParentController.view = To.view;
这样做会取代ParentController
的{{1}},这可能与您的意图有所不同,绝对与以前的线上的过渡动画相矛盾。
你绝对不能打电话,
view
直接
根据我的理解,你应该能够删除最后两行。