将对象保持在CoreAnimation效果之上

时间:2011-04-03 04:13:43

标签: iphone objective-c

当核心动画在其上运行时,是否可以在另一个视图的顶部保持视图?

我正在从顶部和底部进出视图。目前,滑出的视图在当前可见的每个其他视图的顶部滑动,我想知道我是否可以使视图保持在动画效果之上。

以下是我现在拥有的动画之一的示例:

CATransition *push = [CATransition animation];
push.type = kCATransitionPush;
push.subtype = kCATransitionFromTop;
[self.grid.layer addAnimation:push forKey:kCATransition];

// Changes to the view here

[CATransaction commit];

我想要保持可见的视图不会与正在滑出的视图的原始位置重叠。

这是屏幕布局的ASCII图:

+------------------------------+ 
|  View I want to keep on top  |
|------------------------------|
|                              |
|------------------------------|
|    View that will slide up   |
|     ^   ^   ^   ^   ^  ^     |
|                              |
|                              |
|                              |
|                              |
|                              |
|                              |
+------------------------------+ 

1 个答案:

答案 0 :(得分:3)

经过一番游戏后,我意识到CoreAnimation尊重UIViews的自然堆叠顺序。这意味着如果在动画之后添加了视图,它将被置于顶部,动画将在其后面发生。

要更改视图的堆叠顺序,我可以使用以下消息:

- (void)bringSubviewToFront:(UIView *)view;
- (void)sendSubviewToBack:(UIView *)view;

UIViews的堆叠顺序功能和行为是detailed in other questions and answers