保留蒙版 UIView 的阴影

Preserve Shadow of a Masked UIView

我正在尝试创建一个带阴影的半圆 UIView。

我所做的是:

  1. 创建一个 UIView。
  2. 将它的背景颜色设置为白色
  3. 设置 CornerRadius 使其成为圆形
  4. 使用 view.layer.shadow 属性为其添加阴影

    circleView.backgroundColor = UIColor.whiteColor();
    
    circleView.layer.cornerRadius = baseRoundView.bounds.height/2 ;
    
    circleView.layer.shadowColor = UIColor.blackColor().CGColor;
    circleView.layer.shadowOffset = CGSize(width: 0, height: -3);
    circleView.layer.shadowOpacity = 0.1;
    circleView.layer.shadowRadius = 1;
    

    但是这些步骤只让我得到了一个带阴影的完整圆形 UIVIEW。

所以我试着遮住下半部分

    var maskRect: CGRect = CGRect(x: 0, y: 0), width: self.circleView.bounds.width, height: self.circleView.bounds.height/2);
    var path = CGPathCreateWithRect(maskRect, nil);

    maskLayer.path = path;

    circleView.layer.mask = maskLayer;

这些步骤效果很好,除了我失去了顶部阴影

我希望有什么

有什么想法吗?

一样,我只需要调整maskLayer的Y位置来覆盖阴影即可。

var maskRect: CGRect = CGRect(x: 0, y: -3), width: self.circleView.bounds.width, height: self.circleView.bounds.height/2 + 3  );