iOS中设置view层级关系,Layer的zPosition属性使用

addSubview的方式,会把最后添加的view放到最上面,一般情况下,我们按照顺序添加就可以满足要求了.
[self.view bringSubviewToFront:self.redView]  ,  会把redView放到最前面 .
[self.view sendSubviewToBack:self.redView]; 会把redView放到最底层.
- (void)insertSubview:(UIView *)view atIndex:(NSInteger)index; 把子view放到指定的index,这个index不可以超过父视图的子view数量
- (void)insertSubview:(UIView *)view belowSubview:(UIView *)siblingSubview;, 把view放到siblingSubview的下面
- (void)insertSubview:(UIView *)view aboveSubview:(UIView *)siblingSubview; 把view放到siblingSubview的上面

一般来说这样控制视图的层级就够了, 但是前段时间在看前端的知识时发现了css上有z-index这个属性可以调整视图的上下层关系,感觉比上面的方式要好的多.  心里就在想iOS上应该也有类似的机制,找了一遍UIView的头文件没有找到类似的东西, 不甘心,百度一下原来在UILayer这一层上.

zPosition属性

layer三维空间的,而不是简单的二维。而z轴的position默认值都是0.  z轴的值越大,在图层的越上方.
比如说设置了red.layer.zPosition = 10, 那么red就会始终在所有subview的最上方, 当然如果在设置一个 greenView.layer.zPosition = 20 , 那么greenView会在red的上方了.  通过zPosition可以方便的做到让某个view始终在父视图的最上层. 但是有个需要注意的地方, 这个zPositon只是改变了UI,使某个view看起来在上面, 但是对于的事件响应链并没有变化,如果需要使某个view不止在最上面,而且事件也是优先响应,那么还是需要把这个viewbringSubviewToFront:的.

Layer与UIView的关系  :  https://www.jianshu.com/p/9c7a23ea705b.

发布了101 篇原创文章 · 获赞 33 · 访问量 24万+

猜你喜欢

转载自blog.csdn.net/u014600626/article/details/104353751
今日推荐