XZ_iOS 如何给UIView同时添加圆角和阴影

     1、给UIView同时添加圆角和阴影

       美工的审美角度和我们程序员就是不同,你越是程序无法直接实现的效果,越是美工想要看到的效果。就这样,既想要图片有阴影又想要图片有圆角这个需求就产生了。

       如下图,我们需要设置阴影加圆角的是图片ImageView,首先我们给图片欠套一个UIView(topView),欠套方法如下:

设置这个UIView的背景色为有背景色,我设置了跟contentView同样的白色;

给这个 UIImageView 添加圆角,且背景色为 defaultColor,既没有背景色

然后给 UIView 添加阴影即可,这样就从视觉上感觉是既有了圆角又有了阴影。

@property (weak, nonatomic) IBOutlet UIView *bgView; // 拖线到控制器

// 黑色阴影

_bgView.layer.shadowColor = [UIColor colorWithHexString: @"666666"].CGColor;

_bgView.layer.shadowOffset = CGSizeMake(0, 3);

_bgView.layer.shadowOpacity = 0.5;

_bgView.layer.masksToBounds = YES;

_bgView.layer.cornerRadius = 8;

_bgView.clipsToBounds = NO;

2、设置UIView上面两个是圆角或者下面两个是圆角的效果

// 设置 UIView 上面两个角是圆角
func cornerRadius_two(radius:CGFloat){
        let rectCorner = UIRectCorner.topLeft.rawValue | UIRectCorner.topRight.rawValue
        let bezierPath = UIBezierPath.init(roundedRect: self.bounds, byRoundingCorners: UIRectCorner(rawValue: rectCorner), cornerRadii: CGSize(width: radius, height: radius))
        let maskLayer = CAShapeLayer()
        maskLayer.frame = self.bounds
        maskLayer.path = bezierPath.cgPath
        self.layer.mask = maskLayer
        self.setNeedsLayout()
        self.layoutSubviews()
    }
// 设置 UIView 下面两个角是圆角
func cornerRadius_two_bottom(radius:CGFloat){
        let rectCorner = UIRectCorner.bottomLeft.rawValue | UIRectCorner.bottomRight.rawValue
        let bezierPath = UIBezierPath.init(roundedRect: self.bounds, byRoundingCorners: UIRectCorner(rawValue: rectCorner), cornerRadii: CGSize(width: radius, height: radius))
        let maskLayer = CAShapeLayer()
        maskLayer.frame = self.bounds
        maskLayer.path = bezierPath.cgPath
        self.layer.mask = maskLayer
        self.setNeedsLayout()
        self.layoutSubviews()
    }
发布了208 篇原创文章 · 获赞 52 · 访问量 14万+

猜你喜欢

转载自blog.csdn.net/understand_XZ/article/details/101101365
今日推荐