我的问题是,如何确保视图的layer.mask位于UI层次结构的后面,或者,因为不一定需要实现我想要的效果,我该如何设置边框在iOS 7和iOS 8上,视图周围有圆角顶角和底角?以下是我当前解决方案遇到的问题。
在iOS 7中,当我像这样设置视图的图层掩码时:
UIBezierPath *maskPath;
maskPath = [UIBezierPath bezierPathWithRoundedRect:self.view.bounds
byRoundingCorners:(UIRectCornerTopLeft | UIRectCornerTopRight)
cornerRadii:CGSizeMake(WDFeedItemViewCornerRadius,
WDFeedItemViewCornerRadius)];
CAShapeLayer *maskLayer = [[CAShapeLayer alloc] init];
maskLayer.frame = self.bounds;
maskLayer.path = maskPath.CGPath;
self.view.layer.mask = maskLayer;
结果实际上是视图周围的边界(顶部,“Bruce Morgan”[这是一个假名,只是让你不害怕],在它周围有一个边框,底部是方形的圆形在顶部):
但是,在iOS 8上运行相同的代码会将视图的掩码设置为FRONT,如下所示:
通过查看UI层次结构确认
(遗憾的是,无法查看iOS 7的层次结构):
我尝试在当前视图后面创建一个视图,其唯一目的是为其应用蒙版,以及将layer.zPosition设置为0并将mask.zPosition设置为0,但是掩码STILL出现在所有内容的顶部。这是怎么回事?我该如何解决?
答案 0 :(得分:0)
Yeaaaaah ......事实证明超级视图正在调用insertSubview:belowSubview:
,并且出于某种原因(或许下面的“查看”这个论点没有完成加载?),它只是添加了新的查看所有其他人(在iOS 8中,但在iOS 7中没有)。使用索引0将insertSubview:belowSubview:
更改为insertSubview:atIndex:
解决了我的问题。