показать анимацию, когда addubview - PullRequest
19 голосов
/ 06 сентября 2010

Я хочу добавить подпредставление с анимацией. Я использую add sub view, поэтому он не показывает анимацию, поэтому я хочу показать любую анимацию, когда я делаю это ... Я использую код ниже: -

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

Кто-нибудь может подсказать, как мне это сделать?

Ответы [ 3 ]

38 голосов
/ 22 декабря 2010

Вот код .. Просто попробуйте.

PS: замените myView на имя представления, которое вы хотите заменить.

CATransition *applicationLoadViewIn =[CATransition animation];
[applicationLoadViewIn setDuration:duration];
[applicationLoadViewIn setType:kCATransitionReveal];
[applicationLoadViewIn setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn]];
[[myView layer]addAnimation:applicationLoadViewIn forKey:kCATransitionReveal];
26 голосов
/ 19 декабря 2011

здесь для анимационных блоков

[UIView transitionWithView:containerView 
                  duration:0.5 
               options:UIViewAnimationTransitionFlipFromRight //any animation
            animations:^ { [containerView addSubview:subview]; }
            completion:nil];
0 голосов
/ 24 октября 2017

Может быть, вы можете создать подкласс 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
    }
}
...