zoukankan      html  css  js  c++  java
  • 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 

  • 相关阅读:
    深入解析QML引擎,第1部分:QML文件加载
    解释器原理
    NLP入门(十)使用LSTM进行文本情感分析
    Python之将Python字符串生成PDF
    SPARQL入门(二)使用Java操作ARQ
    SPARQL入门(一)SPARQL简介与简单使用
    NLP入门(九)词义消岐(WSD)的简介与实现
    利用百度文字识别API识别图像中的文字
    NLP入门(八)使用CRF++实现命名实体识别(NER)
    Cayley图数据库的可视化(Visualize)
  • 原文地址:https://www.cnblogs.com/oumygade/p/4476133.html
Copyright © 2011-2022 走看看