iOS 视图切圆角和阴影

1.四个角都切

self.picImage.layer.cornerRadius = 8;

self.picImage.layer.masksToBounds = YES;

2.切1~4个角

代码示例(切的左下,和右下)

UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect:self.tipLabel.bounds byRoundingCorners:UIRectCornerBottomLeft | UIRectCornerBottomRight cornerRadii:CGSizeMake(5, 5)];

CAShapeLayer *maskLayer = [[CAShapeLayer alloc] init];

maskLayer.frame = _tipLabel.bounds;

maskLayer.path = maskPath.CGPath;

self.tipLabel.layer.mask = maskLayer;

类型共有以下几种:

  • UIRectCornerTopLeft

  • UIRectCornerTopRight

  • UIRectCornerBottomLeft

  • UIRectCornerBottomRight

  • UIRectCornerAllCorners

3.视图加阴影

  • 阴影的颜色
    imgView.layer.shadowColor = [UIColor blackColor].CGColor;
  • 阴影的透明度
    imgView.layer.shadowOpacity = 0.8f;
  • 阴影的圆角
    imgView.layer.shadowRadius = 4.f;
  • 阴影偏移量
    imgView.layer.shadowOffset = CGSizeMake(5,5);

这里写图片描述

imgView.layer.shadowOffset = CGSizeMake(0,0);

这里写图片描述

4.圆角和阴影共存

圆角和阴影无法在一个layer上共存,所以需要思路是再创建一个layer层,实现阴影,放到视图下边,具体实现:

//圆角
imgView.layer.masksToBounds = YES;
imgView.layer.cornerRadius = 10;
// 阴影
CALayer *subLayer=[CALayer layer];
    CGRect fixframe = imgView.frame;
    subLayer.frame= fixframe;
    subLayer.cornerRadius=8;
    subLayer.backgroundColor=[[UIColor blackColor] colorWithAlphaComponent:0.8].CGColor;
    subLayer.masksToBounds=NO;
    subLayer.shadowColor = [UIColor blackColor].CGColor;//shadowColor阴影颜色
    subLayer.shadowOffset = CGSizeMake(3,2);//shadowOffset阴影偏移,x向右偏移3,y向下偏移2,默认(0, -3),这个跟shadowRadius配合使用
    subLayer.shadowOpacity = 0.8;//阴影透明度,默认0
    subLayer.shadowRadius = 4;//阴影半径,默认3
    [self.view.layer insertSublayer:subLayer below:imgView.layer];

这里写图片描述


转载请注明出处,万分感谢!

猜你喜欢

转载自blog.csdn.net/qcx321/article/details/78021138