如何更改UIView zPosition?

时间:2010-08-21 09:05:08

标签: iphone core-animation

我不明白如何更改视图的zPosition,我试试这个但没有任何反应:

- (void)viewDidLoad {
    [super viewDidLoad];

    UIView *view = [[[UIView alloc] initWithFrame:CGRectMake(100, 100, 100, 100)] autorelease];
    view.backgroundColor = [UIColor blackColor];
    view.layer.zPosition = -400;
    [self.view addSubview:view];
}

在CALayer文档中,它没有说在使用此属性之前应该做任何事情。有谁知道我错过了什么?

谢谢, 文森特。

2 个答案:

答案 0 :(得分:11)

要使某个属性的zPosition对图层的相对位置产生影响,所有图层必须是彼此的兄弟。也就是说,这在视图或层次结构的不同级别之间不起作用,但可以与层次结构的同一级别的那些级别一起使用。例如,您无法使用此视图在其超级视图下方放置视图。

在任何情况下,我都不认为你会看到使用zPosition属性从背景到前景的平滑动画。一个层在相对Z位置比另一个兄弟层更高的瞬间,它弹出到屏幕上。即使您为Z位置设置动画,当一个图层通过另一个图层时,您仍会看到瞬间变化。您可能需要手动为图层的不透明度设置动画,然后返回以实现从背景到前景的更平滑过渡。

如果您想要对图层堆叠和相对定位有所了解,请参阅对this question的回复。

答案 1 :(得分:0)

您可以使用zPosition轻松为CALayer的{​​{1}}属性设置动画。

UIView.transitionWithView()