iOS 设置view层级Layer的zPosition属性

2022-07-27  本文已影响0人  小和大大

addSubview的方式,会把最后添加的view放到最上面,一般情况下,我们按照顺序添加就可以满足要求了.

// 会把redView放到最前面 .
[self.view bringSubviewToFront:self.redView];
// 会把redView放到最底层
[self.view sendSubviewToBack:self.redView]; 
// 把子view放到指定的index,这个index不可以超过父视图的子view数量
- (void)insertSubview:(UIView *)view atIndex:(NSInteger)index; 
// 把view放到siblingSubview的下面
- (void)insertSubview:(UIView *)view belowSubview:(UIView *)siblingSubview;
// 把view放到siblingSubview的上面
- (void)insertSubview:(UIView *)view aboveSubview:(UIView *)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:的.

原文链接:https://blog.csdn.net/u014600626/article/details/104353751

上一篇下一篇

猜你喜欢

热点阅读