iOS 给切过圆角的View,加阴影(既切圆角又加阴影)

热门标签

特别声明:文章多为网络转载,资源使用一般不提供任何帮助,特殊资源除外,如有侵权请联系!

给切过圆角的View,加阴影(既切圆角又加阴影)
先附上效果图:

iOS 给切过圆角的View,加阴影(既切圆角又加阴影)
效果图

iOS项目上常常需要给一个View设置圆角的同时再加阴影。最近做一个项目,需要切圆角加阴影,并且还要做动画。大家都知道View处理视图布局,layer来处理动画。
这样一来做法有两种,第一就是公司UI设计人员给切图,我们直接对切图进行操作,很简单,这里不赘述。
但是,如果要求的地方比较少还好,如果多了,就不适合用切图了。而且不是什么时候用图片都可以的。
所以,我们这里介绍一个用代码实现的方法。

首先大家要明白两句代码:

clipsToBoundsmasksToBounds。具体意思稍后给大家介绍。

先附上一个代码,平时我们都是这么写的:

_imgView.layer.cornerRadius = 50;   //设置imageView的圆角

_imgView.layer.masksToBounds = YES;

_imgView.layer.shadowColor = [UIColor blackColor].CGColor;//设置阴影的颜色

_imgView.layer.shadowOpacity = 0.8;//设置阴影的透明度

_imgView.layer.shadowOffset = CGSizeMake(1, 1);//设置阴影的偏移量

_imgView.layer.shadowRadius = 3;//设置阴影的圆角

但是结果会发现没有效果。
其实原因很简单。我们已经设置出了阴影,但是masksToBounds这句代码,会把,超出View视图的部分切掉.如果masksToBounds设置为NO,阴影会在,但是圆角就会没了.

高潮,正解来了

现在我们先创建一个父视图,给父视图加阴影,在再给原先的视图切圆角.

  UIView *shadowView = [[UIView alloc]initWithFrame:CGRectMake(143 , 200, 100, 100)];
    
    [self.view addSubview:shadowView];
    
    shadowView.layer.shadowColor = [UIColor blackColor].CGColor;
    
    shadowView.layer.shadowOffset = CGSizeMake(5, 5);
    
    shadowView.layer.shadowOpacity = 1;
    
    shadowView.layer.shadowRadius = 9.0;
    
    shadowView.layer.cornerRadius = 9.0;
    
    shadowView.clipsToBounds = NO;
    
    [shadowView addSubview:_imgView];
 

这样之后就可以了,这是为什么呢?
我们回过头解释一下上面提到的两句代码:
clipsToBounds
:指的是 某视图上的子视图(注意是子视图);如果超出父视图,超出父视图的部分就会截掉;
masksToBounds
:指的是 某视图的图层上的子图层(还是这个视图),如果超出这个视图,就截掉.

好了,很简单,大家理解一下.

 

标签:

未经允许不得转载:作者:SheaYang, 转载或复制请以 超链接形式 并注明出处 技术Dog|博客
原文地址:《iOS 给切过圆角的View,加阴影(既切圆角又加阴影)》 发布于2019-11-27

分享到:
赞(0)

评论 抢沙发

6 + 9 =


iOS 给切过圆角的View,加阴影(既切圆角又加阴影)

长按图片转发给朋友

Vieu4.0主题
专业打造轻量级个人企业风格博客主题!专注于前端开发,全站响应式布局自适应模板。

登录

忘记密码 ?

您也可以使用第三方帐号快捷登录

Q Q 登 录
微 博 登 录