将对象保持在 CoreAnimation 效果之上
Posted
技术标签:
【中文标题】将对象保持在 CoreAnimation 效果之上【英文标题】:Keeping objects on top of CoreAnimation effects 【发布时间】:2011-04-03 04:13:43 【问题描述】:是否可以在 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 |
| ^ ^ ^ ^ ^ ^ |
| |
| |
| |
| |
| |
| |
+------------------------------+
【问题讨论】:
【参考方案1】:在玩了一堆之后,我意识到 CoreAnimation 尊重 UIViews 的自然堆叠顺序。这意味着如果一个视图是在动画之后添加的,它将被放置在顶部并且动画将发生在它的后面。
要更改视图的堆叠顺序,我可以使用以下消息:
- (void)bringSubviewToFront:(UIView *)view;
- (void)sendSubviewToBack:(UIView *)view;
UIViews的堆叠顺序功能和行为是detailed in other questions and answers。
【讨论】:
或者,您可以修改视图层的 zPosition。以上是关于将对象保持在 CoreAnimation 效果之上的主要内容,如果未能解决你的问题,请参考以下文章
Blender中是不是有一个“保持在表面之上”的功能,可以向外移动可能被另一个对象隐藏的对象的任何部分?
iOS CoreAnimation 逐帧动画 CADisplayLink