I want to make the glow effect spread outside of thisView.
我使用此代码制作了Half-Rounded rect cornered UIVew
。
Round two corners in UIView
这是我的代码。
+ (UIView *)makeUpperHalfRoundedView:(UIView *)view {
CAShapeLayer *maskLayer = [CAShapeLayer layer];
maskLayer.frame = view.bounds;
UIBezierPath *roundedPath =
[UIBezierPath bezierPathWithRoundedRect:maskLayer.bounds
byRoundingCorners:UIRectCornerTopLeft | UIRectCornerTopRight
cornerRadii:CGSizeMake(8.f, 8.f)];
maskLayer.fillColor = [[UIColor blackColor] CGColor];
maskLayer.backgroundColor = [[UIColor clearColor] CGColor];
maskLayer.path = [roundedPath CGPath];
// maskLayer.masksToBounds = NO;
//Don't add masks to layers already in the hierarchy!
UIView *superview = [view superview];
[view removeFromSuperview];
view.layer.mask = maskLayer;
[superview addSubview:view];
return view;
}
在此视图中,
two image buttons
靠近边界。如果按钮上发生触摸事件,则会显示发光效果(
showsTouchWhenHighlighted
)在使用这段代码之前,我只是使用了
thisView.layer.cornerRadius = 8;
thisVIew.layer.masksToBounds = NO;
和发光效果散布在“ thisView”之外。
但是,在“ thisView”中使用CAShapeLayer遮罩半唤醒矩形后,辉光效果将被边界遮罩。
最佳答案
您所看到的正是口罩的工作原理。您正在将蒙版应用于超级视图的图层。让我们将该视图称为superview
(就像在代码中一样)。好吧,那该怎么办?它将屏蔽superview
及其所有子层。这包括其子视图。它的子视图实际上是它的子层。
因此,由于按钮是superview
的子视图,因此它们像superview
中的所有其他内容一样被屏蔽。
如果您不希望这种情况发生,请不要将按钮设为superview
的子视图。例如,他们可以坐在superview
的顶部而不必成为其子视图。
关于iphone - 如何在CAShapeLayer(Rounded-Recr角UIView)上设置maskToBounds效果?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16073879/