iOS 在圆角视图上添加阴影

阴影其实就是在视图之外添加了一层类似遮罩的图层 所以只要是设置了layer.masksToBounds的视图都是无法直接显示阴影的 需要另外添加一层视图才开可以显示 效果如下



下面来讲实现

第一步 添加两个视图 一个需要设置圆角的视图(以下用headBtn称呼)一个用于添加阴影的视图(以下用headBtnShadowView称呼)

注意

  • headBtnShadowView最好是与headBtn宽高相同 并且颜色设为clearColor
  • headBtn是作为子视图添加到headBtnShadowView上的
  • 只在headBtn上进行圆角相关设置
  • 千万不要设置 headBtnShadowView的layer.masksToBounds

第二步 设置阴影

- (void)setHeadBtnShadow{
    
    _headBtnShadowView.layer.shadowOpacity = 0.6;//0-1 0就完全看不见越接近1阴影越实
    _headBtnShadowView.layer.shadowColor = COLORMAINBLUE.CGColor;//阴影颜色
    _headBtnShadowView.layer.shadowOffset = CGSizeMake(0, 3);
    //偏移量 宽度表示横坐标偏移量 高度表示纵坐标偏移量 这里是横坐标不变 纵坐标向下偏移3
    _headBtnShadowView.layer.shadowRadius = 4; 
    //该数值越大阴影扩散的越远
    
    //画出圆形阴影
    CGMutablePathRef circlePath = CGPathCreateMutable();
    CGPathAddEllipseInRect(circlePath, NULL, self.headBtn.bounds);
    self.headBtnShadowView.layer.shadowPath = circlePath;
    CGPathRelease(circlePath);
    

    /**
    //画方形阴影
    CGMutablePathRef squarePath = CGPathCreateMutable();
    CGPathAddRect(squarePath, NULL, self.headBtn.bounds);
    self.headBtnShadowView.layer.shadowPath = squarePath; 
    CGPathRelease(squarePath);
    */
    //更复杂的图形需要用UIBezierPath来画
}

参考链接:http://www.cocoachina.com/ios/20150104/10816.html

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 转载:http://www.jianshu.com/p/32fcadd12108 每个UIView有一个伙伴称为l...
    F麦子阅读 6,317评论 0 13
  • 在iOS中随处都可以看到绚丽的动画效果,实现这些动画的过程并不复杂,今天将带大家一窥ios动画全貌。在这里你可以看...
    每天刷两次牙阅读 8,572评论 6 30
  • 每个UIView有一个伙伴称为layer,一个CALayer。UIView实际上并没有把自己画到屏幕上;它绘制本身...
    shenzhenboy阅读 3,160评论 0 17
  • 在iOS中随处都可以看到绚丽的动画效果,实现这些动画的过程并不复杂,今天将带大家一窥iOS动画全貌。在这里你可以看...
    F麦子阅读 5,143评论 5 13
  • Core Animation其实是一个令人误解的命名。你可能认为它只是用来做动画的,但实际上它是从一个叫做Laye...
    小猫仔阅读 3,803评论 1 4