zoukankan      html  css  js  c++  java
  • iOS——CALayer的shadow无效问题

    CALayer *sublayer = [CALayer layer];
        sublayer.backgroundColor = [UIColor purpleColor].CGColor;
        sublayer.shadowOffset = CGSizeMake(0, 3);
        sublayer.shadowRadius = 5.0;
        sublayer.shadowColor = [UIColor blackColor].CGColor;
        sublayer.shadowOpacity = 0.8;
        sublayer.frame = CGRectMake(30, 30, 128, 192);
        sublayer.borderColor = [UIColor blackColor].CGColor;
        sublayer.borderWidth = 2.0;
        sublayer.cornerRadius = 10.0;
        [self.view.layer addSublayer:sublayer];
        
        CALayer *imageLayer = [CALayer layer];
        imageLayer.frame = sublayer.bounds;
        imageLayer.cornerRadius = 10.0;
        imageLayer.contents = (id)[UIImage imageNamed:@"snaguosha.png"].CGImage;
        imageLayer.masksToBounds = YES;
        [sublayer addSublayer:imageLayer];
    
        CALayer *customDrawn = [CALayer layer];
        customDrawn.delegate = self;
        customDrawn.backgroundColor = [UIColor greenColor].CGColor;
        customDrawn.frame = CGRectMake(30, 250, 280, 200);
        customDrawn.shadowOffset = CGSizeMake(0, 3);
        customDrawn.shadowRadius = 5.0;
        customDrawn.shadowColor = [UIColor blackColor].CGColor;
        customDrawn.shadowOpacity = 1;
        customDrawn.cornerRadius = 10.0;
        customDrawn.borderColor = [UIColor blackColor].CGColor;
        customDrawn.borderWidth = 2.0;
        customDrawn.masksToBounds = YES;
        [self.view.layer addSublayer:customDrawn];
        [customDrawn setNeedsDisplay];

    以上代码预览如下:

    可以看到下方的部分没有阴影,Why?看了半天也没看出什么不一样,后来发现是因为customDrawn.masksToBounds = YES;这句代码导然不存在,如果去掉这行代码会是这样的:

    阴影出来了,但是圆角没了。解决办法很简单,像上面图片的方式,里面套一层,masksToBounds作用在里层,外层显示阴影

  • 相关阅读:
    浏览器组成
    Go!!!
    产假计算器地址
    flex 纵向布局,垂直换行,没有撑开父盒子宽度,求解??
    毕业档案
    进程与线程
    事件循环
    回调地狱
    错误优先回调
    组件 v-if 小心哦
  • 原文地址:https://www.cnblogs.com/lihaiyin/p/4432313.html
Copyright © 2011-2022 走看看