为UIView设置阴影效果

为UIView设置阴影效果
阴影效果的实现,苹果提供了很好的实现方式,主要是layer层的绘制,具体的原理,可以查询资料.

注意一定不要写,否则不会显示阴影

self.view.layer.masksToBounds = YES;
或者
self.view.layer.clipsToBounds = YES;

1.最直接,也是比较简单的方式:效果如红色view

 func addShadowView(){
         let shadowView = UIView(frame: CGRectMake(100, 100, 100, 100))
         shadowView.backgroundColor = UIColor.redColor()
        //setShadow
        shadowView.layer.cornerRadius = 5;
        shadowView.layer.shadowColor = UIColor.blackColor().CGColor
        shadowView.layer.shadowOffset = CGSizeMake(5, 10)
        shadowView.layer.shadowOpacity = 1.0
        shadowView.layer.shadowRadius = 5;
         //clipsToBounds为true不会显示阴影
         //shadowView.clipsToBounds = true
         view.addSubview(shadowView)
         
     }

2.可以自定义一个view,重写drawRect:方法
主要代码:

 override func drawRect(rect: CGRect) {
         //get contextRef
         var context = UIGraphicsGetCurrentContext()
         //rect
         var pathRect = CGRectInset(self.bounds, self.bounds.size.width * 0.1, self.bounds.size.height * 0.1)
         let cornerRaidus: CGFloat = 20
         var rectanglePath = UIBezierPath(roundedRect: pathRect, cornerRadius: cornerRaidus)
         CGContextSaveGState(context)
         //set shadow
         var shadow = UIColor.blackColor().CGColor
         var shadowOffset = CGSizeMake(3, 3)
         var shadowRadius : CGFloat = 5.0
                  
         CGContextSetShadowWithColor(context, shadowOffset, shadowRadius, shadow)
         //fill color
         UIColor.greenColor().setFill()
         rectanglePath.fill()
         CGContextRestoreGState(context)
     }

效果为绿色view



类似的渐变色,transform都重写drawRect:可以自己定义.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 在通过这样的方式设置阴影时,必须把父视图的masksToBounds属性关掉,因为阴影设置的方式就是加offset...
    辰牧殇阅读 3,701评论 0 3
  • 转载:http://www.jianshu.com/p/32fcadd12108 每个UIView有一个伙伴称为l...
    F麦子阅读 11,508评论 0 13
  • 在iOS中随处都可以看到绚丽的动画效果,实现这些动画的过程并不复杂,今天将带大家一窥iOS动画全貌。在这里你可以看...
    F麦子阅读 10,541评论 5 13
  • 在iOS中随处都可以看到绚丽的动画效果,实现这些动画的过程并不复杂,今天将带大家一窥ios动画全貌。在这里你可以看...
    每天刷两次牙阅读 12,722评论 6 30
  • 每个UIView有一个伙伴称为layer,一个CALayer。UIView实际上并没有把自己画到屏幕上;它绘制本身...
    shenzhenboy阅读 8,323评论 0 17

友情链接更多精彩内容