iOS view设置阴影及圆角(圆角及阴影冲突不显示问题)

项目中有遇到一种情况 为有设置圆角的view或者button设置阴影,用常规写法发现阴影添加无效,曾试过在需要添加阴影控件下方添加CALayer,如果控件始终不动还好,但控件如果要发生位置变化的话CALayer本身具有动画属性,会造成阴影会慢控件一步,这时你又需要禁用动画即可做到,但禁用动画后你不想控件移动的很突兀,那就很尴尬,而且这么写下来代码冗长,神烦,因此找到了下面的方法

如果设置了超过主图层的部分减掉,则设置阴影不会有显示效果。因此,需将剪切超出主图层部分的代码设置为NO

view.clipsToBounds=NO;
// shadowColor阴影颜色
view.layer.shadowColor = [UIColor blackColor].CGColor;

// shadowOffset阴影偏移,x向右偏移1,y向下偏移1,默认(0, -3),这个跟shadowRadius配合使用
view.layer.shadowOffset = CGSizeMake(1,1);

// 阴影半径,默认3
view.layer.shadowRadius = 4;

// 阴影透明度,默认0
view.layer.shadowOpacity = 0.5;

clipsToBounds(UIView)
是指视图上的子视图,如果超出父视图的部分就截取掉,相当剪切超出父View的部分
masksToBounds(CALayer)
却是指视图的图层上的子图层,如果超出父图层的部分就截取掉,相当于剪切超出父View layer的部分
clipsToBounds执行的时候,调用了自己图层的maskToBounds方法

所以在view上添加圆角及阴影时,可以不设置masksToBounds而只需添加view.clipsToBounds=NO即可
但是,在label上添加圆角及阴影时却无法用该方法实现,只能用到其他方法折回完成。。

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

推荐阅读更多精彩内容

  • 在iOS中随处都可以看到绚丽的动画效果,实现这些动画的过程并不复杂,今天将带大家一窥ios动画全貌。在这里你可以看...
    每天刷两次牙阅读 8,595评论 6 30
  • 在iOS中随处都可以看到绚丽的动画效果,实现这些动画的过程并不复杂,今天将带大家一窥iOS动画全貌。在这里你可以看...
    F麦子阅读 5,156评论 5 13
  • 书写的很好,翻译的也棒!感谢译者,感谢感谢! iOS-Core-Animation-Advanced-Techni...
    钱嘘嘘阅读 2,339评论 0 6
  • Core Animation其实是一个令人误解的命名。你可能认为它只是用来做动画的,但实际上它是从一个叫做Laye...
    小猫仔阅读 3,827评论 1 4
  • 我发现这都要成为我的一个口头禅了,这句话是在今天中午午休的时候就到一个弟妹打来的电话说是要我去接他们回来,...
    憨人崔阅读 261评论 0 0