手动淡入新添加的子视图?

时间:2010-05-17 00:02:51

标签: iphone core-animation subview ios

我希望视图在通过

添加到堆栈时淡入

[self.view addSubview:someSecondaryViewController.view];

如何设置此调用的动画,以便视图淡入(和退出)?

3 个答案:

答案 0 :(得分:29)

在制作动画之前将alpha设置为零,然后将alpha动画设为1。

[fadingView setAlpha:0.0];
[containerView addSubview:fadingView];
[UIView beginAnimations:nil context:nil];
[fadingView setAlpha:1.0];
[UIView commitAnimations];

在删除视图之前,只需将alpha动画设置为零。

BTW,视图层次结构更像是树而不是堆栈。

编辑:

如果在淡出视图后动画结束后没有其他清理,请使用:

[UIView setAnimationDelegate:fadingView];
[UIView setAnimationDidStopSelector:@selector(removeFromSuperview)];

如果您已经设置了didStopSelector,那么请在那里调用removeFromSuperview。

答案 1 :(得分:21)

完成淡出动画后,您还可以使用块从超级视图中删除视图:

[UIView animateWithDuration:0.2
                 animations:^{viewOut.alpha = 0.0;}
                 completion:^(BOOL finished){[viewOut removeFromSuperview];}];

答案 2 :(得分:1)

在斯威夫特......

In

UIView.animateWithDuration(0.2, animations: { self.someSecondaryViewController.view.alpha = 0.0 }) { (done:Bool) in
        self.someSecondaryViewController.view.removeFromSuperview()
}

Out

link: function(scope, elem, attrs){
    if(scope.decorate || attrs.decorate != null){
      elem.find('INPUT').wrap('<div class="decorate-class"></div>')
    }
}