美文网首页
UIView设置阴影

UIView设置阴影

作者: 爱吃萝卜的小蘑菇 | 来源:发表于2019-01-11 10:46 被阅读15次

PS:

clipsToBounds
是指视图上的子视图,如果超出父视图的部分就截取掉
masksToBounds
却是指视图的图层上的子图层,如果超出父图层的部分就截取掉
如果View没有圆角或View圆角位置上没有别的控件可以直接设置:
shadowOffset = CGSizeMake(10, 10)
    self.shadowView.layer.shadowColor = [UIColor redColor].CGColor;
//    阴影偏移量
    self.shadowView.layer.shadowOffset = CGSizeMake(10, 10);
//    阴影透明度
    self.shadowView.layer.shadowOpacity = 1;
//    阴影半径
    self.shadowView.layer.shadowRadius = 5;
shadowOffset = CGSizeMake(0, 0)
shadowOffset = CGSizeMake(0, 0) 圆角
    self.shadowView.layer.shadowColor = [UIColor redColor].CGColor;
//    阴影偏移量
    self.shadowView.layer.shadowOffset = CGSizeMake(0, 0);
//    阴影透明度
    self.shadowView.layer.shadowOpacity = 1;
//    阴影半径
    self.shadowView.layer.shadowRadius = 5;
    self.shadowView.layer.cornerRadius = 10;
    
    self.shadowView.layer.shadowColor = [UIColor redColor].CGColor;
//    阴影偏移量
    self.shadowView.layer.shadowOffset = CGSizeMake(0, 5);
//    阴影透明度
    self.shadowView.layer.shadowOpacity = 1;
//    阴影半径
    self.shadowView.layer.shadowRadius = 0;

如果圆角位置有别的控件的话,需要设置masksToBounds,则需要创建一个新的layer层:

设置masksToBounds后简单方法的效果
self.shadowView.layer.cornerRadius = 10;
    self.shadowView.clipsToBounds = YES;
    
    CALayer *shadowLayer0 = [[CALayer alloc] init];
    shadowLayer0.shadowColor = [UIColor redColor].CGColor;
    shadowLayer0.shadowOpacity = 1;
    shadowLayer0.shadowOffset = CGSizeMake(0, 5);
    shadowLayer0.shadowRadius = 5;
    CGFloat shadowSize0 = 0;
    CGRect shadowSpreadRect0 = CGRectMake(-shadowSize0, -shadowSize0, self.shadowView.bounds.size.width+shadowSize0*2, self.shadowView.bounds.size.height+shadowSize0*2);
    CGFloat shadowSpreadRadius0 =  self.shadowView.layer.cornerRadius == 0 ? 0 : self.shadowView.layer.cornerRadius+shadowSize0;
    UIBezierPath *shadowPath0 = [UIBezierPath bezierPathWithRoundedRect:shadowSpreadRect0 cornerRadius:shadowSpreadRadius0];
    shadowLayer0.shadowPath = shadowPath0.CGPath;
    //重要
    shadowLayer0.frame = self.shadowView.frame;
    [self.shadowView.superview.layer insertSublayer:shadowLayer0 below:self.shadowView.layer];
添加shadowLayer的效果

注意shadowLayer要插入到View的super上

[self.shadowView.superview.layer insertSublayer:shadowLayer0 below:self.shadowView.layer];

否则就是如下效果


[self.shadowView.layer addSublayer:shadowLayer0];

相关文章

  • iOS阴影设置详解

    UIView的阴影设置主要通过UIView的layer的相关属性来设置 阴影的颜色 阴影的透明度 阴影的圆角 阴影...

  • UIView加阴影

    UIView的阴影设置主要通过UIView的layer的相关属性来设置 阴影的颜色 阴影的透明度 阴影的圆角 阴影...

  • UIView设置阴影

    UIView设置阴影CALayer的属性: shadowColor, shadowOffset, shadowOp...

  • UIView设置阴影

    如图是设置阴影的需求,我们按照这个需求来设置阴影 代码如下: 这里有几点需要注意一下: 1、masksToBoun...

  • UIView设置阴影

    PS: clipsToBounds masksToBounds 如果View没有圆角或View圆角位置上没有别的控...

  • Layer处理

    UIView设置边框阴影时,必须设置一个背景颜色,不然不出来。 UITableView 设置边框阴影 UITabl...

  • iOS投影效果

    UIView的投影设置主要通过UIView的layer的相关属性来设置 阴影的颜色:imgView.layer.s...

  • 问题小计

    1、设置scrollView阴影失效。 代码如下,阴影始终不如出来: UIView的clipsToBounds默认...

  • ios 阴影偏移效果

    给UIView及其子类设置阴影偏移效果,代码如下:

  • iOS设置UIView阴影

    masksToBoundslayer对子layer进行切割,为true后切割后,阴影就看不到了。 shadowOf...

网友评论

      本文标题:UIView设置阴影

      本文链接:https://www.haomeiwen.com/subject/hhoarqtx.html