繁体   English   中英

如何更改UIView zPosition?

[英]How to change a UIView zPosition?

我不明白如何更改视图的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文档中,它没有说在使用此属性之前应该做任何事情。 有谁知道我错过了什么?

谢谢,文森特。

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

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

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

您可以使用UIView.transitionWithView()轻松为CALayer zPosition属性设置动画。

var isFirstViewOnTop = true
func switchCards() {
    self.isFirstViewOnTop = !self.isFirstViewOnTop

    UIView.transitionWithView(
        self,
        duration: 0.25,
        options: .TransitionCrossDissolve,
        animations: { () -> Void in
            self.firstView.layer.zPosition = self.isFirstViewOnTop ? 1 : 0
            self.secondView.layer.zPosition = !self.isFirstViewOnTop ? 1 : 0
        },
        completion: nil
    )
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM