• 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 

  • 相关阅读:
    在maven工程中使用groovy
    groovy学习1搭建环境
    Android 中运行时权限获取联系人信息 Demo
    Android 拍照或相册选择照片进行显示缩放位图 Demo
    Android 热点相关操作
    Android 内嵌 HTML5 并进行交互
    AJAX实现局部刷新
    C#主要用于查询sql的web项目:查询以及页面显示数据非常缓慢的改进方案
    配置和读取web.config数据库
    web项目在服务器IIS7上的部署:达到内部网可以通过输入网页直接访问的效果
  • 原文地址:https://www.cnblogs.com/oumygade/p/4476133.html
Copyright © 2020-2023  润新知