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 

  • 相关阅读:
    关于oracle的相关基础语句
    devexpress中如何给TabPage控件的Tab定义背景色
    asp.net中当点击按钮时出现grid编辑弹框
    DEV中dx:ASPxPopupControl 控件的使用(在窗口关闭或隐藏时,清楚文本框中的内容)
    aspx中如何绑定llistbox数据列表
    asp.net中选择数字时,另外的数字同时发生变化(适用dev控件)
    js中substring和substr的用法(文章来自bobo327的博客园)
    QT中常用控键
    sqlite常用语句
    计算机视觉-基于内容的图像检索
  • 原文地址:https://www.cnblogs.com/oumygade/p/4476133.html
Copyright © 2011-2022 走看看