CALayer创建图层和遮挡层应用

本文介绍了如何使用CALayer在iOS开发中创建图层,相较于UIImageView,CALayer更加节省内存。此外,文章还探讨了如何实现CALayer的遮挡层效果,通过遮挡层的形状来展示底层图片的特定部分。

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

CALayer创建图层

// 创建图层
    CALayer *layer = [CALayer layer];
    layer.frame = CGRectMake(50, 50, 200, 200);
    layer.backgroundColor = [UIColor redColor].CGColor;
    // 设置图层内容
    layer.contents = (id)[UIImage imageNamed:@"阿狸头像"].CGImage;
    [self.view.layer addSublayer:layer];

优点:比UIImageView省内存。



二CALayer遮挡层

//图片在图层的下面 你看到的图是通过第一层图形的形状看到的第二张图


#import "ViewController.h"

@interface ViewController ()

@property(nonatomic,strong) CALayer *imageLayer;
@property(nonatomic,strong) CALayer *maskLayer;
@property(nonatomic,strong) UIImage *imageContents;
@property(nonatomic,strong) UIImage *maskCountents;

@end

 self.view.backgroundColor = [UIColor grayColor];
    
    ///底图
    self.imageContents = [UIImage imageNamed:@"02"];
    ///显示底图的图
    self.maskCountents = [UIImage imageNamed:@"maskLayerContents@2x"];
    
    
    ///图片Layer
    self.imageLayer = [CALayer layer];
    self.imageLayer.frame = CGRectMake(0, 64, self.view.frame.size.width, self.view.frame.size.height - 64);
    ///设置
    self.imageLayer.contents = (__bridge id _Nullable)((self.imageContents.CGImage));
    [self.view.layer addSublayer:self.imageLayer];
    
    
    ///遮罩Layer
    self.maskLayer = [CALayer layer];
    self.maskLayer.frame = CGRectMake(0, 64, 200, 200);
    self.maskLayer.contents = (__bridge id _Nullable)((self.maskCountents.CGImage));
    
    //    根据alpha通道 来选择遮罩的地方 黑色全通过,白色全不通过
    self.imageLayer.mask = self.maskLayer;
    
    [NSTimer scheduledTimerWithTimeInterval:0.5 target:self selector:@selector(timerClick) userInfo:nil repeats:YES];

- (void)timerClick
{
    CGFloat x = arc4random()%(375-200);
    CGFloat y = arc4random()%(667-200-64);
    
    ///随机取图块
    self.maskLayer.frame = CGRectMake(x, y, 200, 200);
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值