美文网首页
视图添加阴影的常见问题解析

视图添加阴影的常见问题解析

作者: 随风Wayne | 来源:发表于2017-12-31 21:07 被阅读0次

如何给视图(UIView)添加阴影,相信大家都已经轻车熟路;参考代码如下:

contentView.layer.shadowColor = [UIColor redColor].CGColor; //颜色
contentView.layer.shadowRadius = 4.0f; //半径
contentView.layer.shadowOffset = CGSizeMake(3, 3); //偏移
contentView.layer.shadowOpacity = 1.0f; //透明度
常见问题
  1. 阴影不可见

    • 检查layer的masksToBounds属性是否为YES;
    • 检查阴影所属UIView的clipsToBounds属性是否为YES;

    原因: 视图外阴影的显示,需要超出视图本身区域;所以检测以上属性是否设置正确

  2. 子视图显示阴影


    ShadowInSubviews.png
    • 检查阴影所属UIView是否没有设置背景色(即背景色为clear color)
    • 检查阴影所属UIView的背景色alpha通道小于1

    shadowPath: The default value of this property is nil, which causes the layer to use a standard shadow shape. If you specify a value for this property, the layer creates its shadow using the specified path instead of the layer’s composited alpha channel.

    原因: 如果没有设置layer的shadowPath属性,阴影渲染会根据视图最终的alpha通道来决定阴影的路径;当父视图背景色有透明度,则所有的子视图也会阴影效果

  • 提高性能
    • 设置layer的shadowPath属性

    原因: 显式设定阴影的路径,可以避免Core Animation's的Off-screen渲染;如果没有设置,则需要离屏渲染计算出阴影的路径;

总结: 推荐用法
contentView.layer.shadowColor = [UIColor redColor].CGColor; //颜色
contentView.layer.shadowRadius = 4.0f; //半径
contentView.layer.shadowOffset = CGSizeMake(3, 3); //偏移
contentView.layer.shadowOpacity = 1.0f; //透明度
contentView.layer.shadowPath = CGPathCreateWithRect(CGRectMake(0, 0, 100, 100), NULL); //路径
contentView.clipsToBounds = YES;

如果使用Autolayout,可以在layoutSubviews或者viewDidLayoutSubviews方法中设置设置shadowPath;

参考资料:

欢迎补充阴影的常见问题

相关文章

  • 视图添加阴影的常见问题解析

    如何给视图(UIView)添加阴影,相信大家都已经轻车熟路;参考代码如下: 常见问题 阴影不可见检查layer的m...

  • UIView圆角+阴影

    backView是要添加阴影的视图,思路是backView设置corner圆角,再添加一个带阴影的父视图,代码如下...

  • iOS 视图添加阴影

    1、四边加阴影 2、顶部加阴影 来源:https://www.jianshu.com/p/d299ddf5aaaf...

  • 000-CALayer阴影

    1、通过设置CALayer来给视图控件添加阴影 2、效果如下:

  • 父子控制器详细解析

    父子控制器详细解析(一)父子控制器详细解析(二) —— 添加视图的层级问题

  • iOS中给view设置阴影效果

    iOS开发中我们经常会遇到给指定视图设置其阴影效果 今天就来简单整理一下这里只是简单的给视图添加上阴影的效果 简单...

  • iOS 在圆角视图上添加阴影

    阴影其实就是在视图之外添加了一层类似遮罩的图层 所以只要是设置了layer.masksToBounds的视图都是无...

  • iOS 阴影+圆角

    1.圆角 2.阴影 3.圆角加阴影(错误) 解决方法: 创建一个view,设置阴影效果,然后将所需视图添加到vie...

  • Spring 内部资源视图解析器

    视图解析器会将逻辑视图名称解析为实际视图如: "home" 将会被视图解析器解析成 实际视图。为什么能通过字符串就...

  • 让CALayer的shadowPath跟随bounds一起做动画

    前言 在iOS开发中,我们经常需要给视图添加阴影效果,最简单的方法就是通过设置CALayer的shadowColo...

网友评论

      本文标题:视图添加阴影的常见问题解析

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