美文网首页牛叉的demo开发中有帮助的iOS文章iOS
iOS 给一个设置过圆角的View添加阴影效果

iOS 给一个设置过圆角的View添加阴影效果

作者: 我叫王可可 | 来源:发表于2016-12-30 17:09 被阅读14809次

    最近在项目中遇到要给一个圆形imgeView的底部增加一圈阴影,刚开始这样写是没有出现阴影效果的,下面附上代码:


    _imgView.layer.cornerRadius = 75; //设置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属性为YES了,将后面设置的阴影效果给裁剪掉了,所以我们看不到阴影效果,如果我们将masksToBounds属性为NO了,这样就会失去圆角效果(尽管会出现阴影效果),所以需要向一个两全其美的办法来解决这个问题。

    给imageView添加一个父视图,在父视图上添加阴影效果就好,这样就不会对imageView的圆角造成影响了。

    UIView *shadowView = [[UIView alloc]initWithFrame:_imgView.frame];

    [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

    却是指视图的图层上的子图层,如果超出父图层的部分就截取掉

    最后附上效果图

    相关文章

      网友评论

      本文标题:iOS 给一个设置过圆角的View添加阴影效果

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