如何更改UIView zPosition?

vda*_*bry 4 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];
}
Run Code Online (Sandbox Code Playgroud)

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

谢谢,文森特.

Bra*_*son 12

对于zPosition具有关于层的相对定位的效果的属性,所有层必须是彼此的兄弟.也就是说,这在视图或层次结构的不同级别之间不起作用,但可以与层次结构的同一级别的那些级别一起使用.例如,您无法使用此视图将视图置于其超级视图下方.

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

如果您想要对图层堆叠和相对定位有所了解,请参阅对此问题的回答.