19

我想添加一个带有动画的子视图。我正在使用添加子视图,因此它不显示任何动画,因此我想在执行此操作时显示任何动画...我正在使用以下代码:-

UIViewController *vControllerHome = [[viewTemp alloc] initWithNibName:@"viewTemp" bundle:nil];
vControllerHome.view.frame =CGRectMake(0, 0, 320, 414);
[self.view addSubview:vControllerHome.view];
self.selectedViewController = vControllerHome;

任何人都可以建议我如何做到这一点?

4

3 回答 3

38

这是代码..试试吧。

PS:替换myView为要替换的视图名称。

CATransition *applicationLoadViewIn =[CATransition animation];
[applicationLoadViewIn setDuration:duration];
[applicationLoadViewIn setType:kCATransitionReveal];
[applicationLoadViewIn setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn]];
[[myView layer]addAnimation:applicationLoadViewIn forKey:kCATransitionReveal];
于 2010-12-22T10:15:49.577 回答
27

这是动画块

[UIView transitionWithView:containerView 
                  duration:0.5 
               options:UIViewAnimationTransitionFlipFromRight //any animation
            animations:^ { [containerView addSubview:subview]; }
            completion:nil];
于 2011-12-19T13:25:55.467 回答
0

也许你可以继承 UIView 和覆盖方法willMove(toSuperview newSuperview: UIView?)

这是示例:

override public func willMove(toSuperview newSuperview: UIView?) {
    super.willMove(toSuperview: newSuperview)

    if let _ = newSuperview {
        // This view will be added to some view
        UIView.animate(withDuration: 0.2, delay: 0.0, usingSpringWithDamping: 0.6, initialSpringVelocity: 30.0, options: .curveEaseInOut, animations: {
            //...
        }, completion: { (finish) in

        })
    } else {
        // This view will be removed
    }
}
于 2017-10-24T02:30:18.687 回答