当Core Animation在其上运行时,是否可以将视图保留在另一个视图之上?

我正在从顶部和底部滑动视图。目前,滑出的视图会在当前其他所有可见视图的顶部滑动,我想知道是否可以使视图停留在动画效果之上。

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

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   |
|     ^   ^   ^   ^   ^  ^     |
|                              |
|                              |
|                              |
|                              |
|                              |
|                              |
+------------------------------+

最佳答案

经过一堆的试验之后,我意识到CoreAnimation遵循UIViews的自然堆叠顺序。这意味着,如果在对某个视图进行动画处理后添加了该视图,则该视图将置于顶部,而动画将在其后发生。

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

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


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

关于iphone - 将对象置于CoreAnimation效果之上,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5527521/

10-12 02:06