iOS 利用图层的mask制作无缝的过渡效果

示例代码

- (void)viewDidLoad {

    [super viewDidLoad];

 

    [self creatLayer];

    [self creatText];

    [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(change) userInfo:nil repeats:YES];

}

 

- (void)creatLayer

{

    CALayer *left = [CALayer layer];

    left.frame = CGRectMake(100, 100, 200, 50);

    left.backgroundColor = [UIColor blueColor].CGColor;

    [self.view.layer addSublayer:left];

    self.left = left;

    

    CALayer *right = [CALayer layer];

    right.frame = CGRectMake(100, 100, 200, 50);

    right.backgroundColor = [UIColor redColor].CGColor;

    [self.view.layer addSublayer:right];

    self.right = right;

}

 

- (void)creatText

{

    UILabel * leftLabel =[[UILabel alloc]initWithFrame:CGRectMake(100, 200, 200, 50)];

    leftLabel.text = @"测试一下测试一下测试";

    leftLabel.textColor = [UIColor redColor];

    leftLabel.textAlignment = NSTextAlignmentCenter;

    [self.view addSubview:leftLabel];

    self.leftLabel = leftLabel;

    

    UILabel * rightLabel =[[UILabel alloc]initWithFrame:CGRectMake(100, 200, 200, 50)];

    rightLabel.text = @"测试一下测试一下测试";

    rightLabel.textColor = [UIColor blueColor];

    rightLabel.textAlignment = NSTextAlignmentCenter;

    [self.view addSubview:rightLabel];

    self.rightLabel = rightLabel;    

}

 

- (void)change

{

    self.bili = arc4random()%100;

 

    self.left.mask = [CALayer layer];

    self.left.mask.backgroundColor = [[UIColor blackColor] CGColor];

    self.left.mask.frame = CGRectMake(0, 0, 100+self.bili, 50);

    

    self.right.mask = [CALayer layer];

    self.right.mask.backgroundColor = [[UIColor blackColor ] CGColor];

    self.right.mask.frame = CGRectMake(100+self.bili, 0, 100- self.bili, 50);

    

    self.leftLabel.layer.mask = [CALayer layer];

    self.leftLabel.layer.mask.backgroundColor = [[UIColor blackColor] CGColor];

    self.leftLabel.layer.mask.frame = CGRectMake(0, 0, 100+self.bili, 50);

    

    self.rightLabel.layer.mask = [CALayer layer];

    self.rightLabel.layer.mask.backgroundColor = [[UIColor blackColor ] CGColor];

    self.rightLabel.layer.mask.frame = CGRectMake(100+self.bili, 0, 100- self.bili, 50);

}

  

 

KVNMaskedPageControl的实现原理也是如此:

http://www.oschina.net/p/kvnmaskedpagecontrol/similar_projects?lang=0&sort=view&p=1 

转载于:https://www.cnblogs.com/oumygade/p/4476133.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值