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()
    }

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值