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