UI_5_学习_CALayer

本文通过UIButton演示了iOS中如何设置图层效果,包括边框、圆角、阴影等,并解决阴影消失的问题。介绍了两种图层使用方法及双层图层实现方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

为了确认设置imageView.layer.masksToBounds = YES后,

外面的view是否消失,改用了UIButton来验证.结果是存在的.

    UIButton *imageView = [[UIButton alloc] initWithFrame:CGRectMake(30, 20, 200, 200)];
    [imageView setBackgroundImage:[UIImage imageNamed:@"气球.png"] forState:UIControlStateNormal];
    [self.view addSubview:imageView];
    
    /*****--第一种:图层当作一个属性来使用 --------*/
    //CALayer图层前需要导入一个系统库
    //设置图层的宽度
    [imageView.layer setBorderWidth:5];
    //设置图层的弧度
    [imageView.layer setCornerRadius:100];
    //设置颜色
    [imageView.layer setBorderColor:[UIColor purpleColor].CGColor];
    //设置bounds外消失
    //imageView.layer.masksToBounds = YES;//默认为NO,如果设置为YES时,连阴影也会没有
    //设置透明度
    imageView.layer.opacity = 0.9;
    
    //设置阴影
    imageView.layer.shadowColor = [UIColor redColor].CGColor;
    //设置阴影偏移量
    imageView.layer.shadowOffset = CGSizeMake(30, 30);
    //设置阴影透明度,默认是全透明,所以设置才能看到
    imageView.layer.shadowOpacity = 0.9f;
    //设置阴影弧度
    imageView.layer.shadowRadius = 50;
    
     /*****--第二种:图层单独使用 --------*/
    CALayer *layer1 = [CALayer layer];//便利构造器创建一个图层
    //设置一个图层的内容
    layer1.contents = (id)[UIImage imageNamed:@"气球.png"].CGImage;
    //设置图层的fram
    layer1.frame = CGRectMake(30, 260, 200, 200);
    //把图层add到图层上面
    [self.view.layer addSublayer:layer1];
    [layer1 setCornerRadius :100];


上面有一个问题就是:

我设置imageView.layer.masksToBounds = YES后,连阴影部分都消失了.

为了解决这个问题,我们可以采用两层图层;代码如下:

    CALayer *sublayer =[CALayer layer];
    sublayer.backgroundColor =[UIColor blueColor].CGColor;
    sublayer.shadowOffset = CGSizeMake(3, 10);
    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:@"气球.png"].CGImage;
    imageLayer.masksToBounds =YES;
    [sublayer addSublayer:imageLayer];



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值