文档章节

苹果开机经典滑动动画

caoxiang
 caoxiang
发布于 2015/09/24 12:36
字数 616
阅读 79
收藏 1

1首先定义

@interface ViewController ()
{
    CAGradientLayer* _gridentlayer;
}
@end

2 在viewDidLoad中实现

 //这里出现了CALayer的另一个子类CAGradientLayer,这个类的作用就是能在Layer上绘制出渐变颜色的效果,然后在viewDidLoad()中添加如下代码:
    _gridentlayer = [[CAGradientLayer alloc] init];
    _gridentlayer.bounds=CGRectMake(0, 0,self.backgroundView.frame.size.width, self.backgroundView.frame.size.height);
    _gridentlayer.position=CGPointMake(self.backgroundView.frame.size.width/2, self.backgroundView.frame.size.height/2);
    //    gradientLayer.colors = [
    //UIColor.blackColor().CGColor,
   // UIColor.whiteColor().CGColor,
   // UIColor.blackColor().CGColor
   // ]
    //上述两行的代码是设置Layer的大小及位置
    [_gridentlayer setStartPoint:CGPointMake(0, 0.5)];
    [_gridentlayer setEndPoint:CGPointMake(1, 0.5)];
    /**
     CAGradientLayer的colors属性类型是一个数组[AnyObject],这就意味着我们可以实现多个颜色的渐变效果,并且可以规定各个颜色的顺序。不过在我们这个示例中我们只需要两种颜色,不过需要注意的是虽然颜色只有两种,但是整个颜色渐变的过程中有三个原色点,那就是黑、白、黑,所以我们在这个数组中也需要按照原色点的数量和顺序添加相应的颜色,哪怕颜色都是一样的。
     
     我们既然设置了渐变的三个原色,那么就要对这原色出现的位置进行设置,接着添加如下代码:
     */
    [_gridentlayer setColors:[NSArray arrayWithObjects:(id)[UIColor blackColor].CGColor,(id)[UIColor whiteColor].CGColor,(id)[UIColor blackColor].CGColor, nil]];
    [_gridentlayer setLocations:@[@0.2 ,@0.5,@0.8]];
    [self.backgroundView.layer addSublayer:_gridentlayer];

}

-(void)viewDidAppear:(BOOL)animated{
    [self gradinetAnimate];
}
-(void)gradinetAnimate{
//      self.textlabel.text=@"caoxiang";
//    _gridentlayer.mask=self.textlabel.layer;
    // 首先,创建了一个locations类型的动画实例gradient,将fromValue属性,也就是起始位置的属性设置为[0, 0, 0.25],它的意思是动画开始前,黑色、白色这两个原色的位置在整个Layer的最前端,第二个黑色原色在0.25的位置:
    CABasicAnimation * animation=[CABasicAnimation animationWithKeyPath:@"locations"];
    [animation setFromValue:@[@0,@0,@0.25]];
     [animation setToValue:@[@0.75,@1,@1]];
    //而结束位置toValue,将白色和第二个黑色原色位置设置在整个Layer的末端,第一个黑色原色在0.75的位置:
   // 从图中可以看出,此时整个Layer都变成了黑色。也就是说,在整个动画中,第一个黑色原色从0移动到0.75的位置,白色原色从0移动到1的位置,第二个黑色原色从0.25移动到1的位置。然后设置动画时间为2秒,无线重复次数,最后将gradient动画添加到gradientLayer中。我们在viewDidAppear()方法中调用该动画方法gradientAnimate(),编译运行看看效果:
    animation.duration=2;
    animation.repeatCount=HUGE;
    [_gridentlayer addAnimation:animation forKey:nil];
    self.textlabel.text=@"hahahahaha";
    _gridentlayer.mask=self.textlabel.layer;
}

效果图:

© 著作权归作者所有

上一篇: 友盟分享封装
下一篇: SDWebImage详解
caoxiang
粉丝 5
博文 15
码字总数 4390
作品 0
郑州
程序员
私信 提问
使用苹果自带地图获取当前位置及周围信息

天朝的网络在XXX的干预下,我们很多内容都不能正常访问,需要翻墙。处在这样一个大的局域网环境之下,作为IT行业的我们很是苦恼,如果做的应用要世界通用,那就是痛苦了,需要考虑很多。例如:如果...

Show_Perry
2016/11/15
0
0
iOS开发 显式动画的原理及实现

属性动画 CABasicAnimation *animation = [CABasicAnimation animation]; [self updateHandsAnimated:NO]; animation.keyPath = @"transform"; animation.toValue = [NSValue valueWithCATra......

神补刀
2015/12/08
129
0
[iOS Animation]-CALayer 显示动画 动画组

动画组 CABasicAnimation和CAKeyframeAnimation仅仅作用于单独的属性,而CAAnimationGroup可以把这些动画组合在一起。CAAnimationGroup是另一个继承于CAAnimation的子类,它添加了一个anima...

浩浩老师
2015/09/22
34
0
IOS 转场动画 -CATransition

// // ViewController.m // 转场动画-CATransition // // Created by dc008 on 15/12/22. // Copyright © 2015年 崔晓宇. All rights reserved. // #import "ViewController.h" #define IM......

温暖c
2015/12/23
19
0
jQuery教程:教你打造20个超级酷的视觉效果

我们都爱jQuery,因为基于它我们可以做出各种奇特的效果。下面这些特效教程都基于不同的主题,它们都包括一些很酷的视觉效果。按照下列步骤来进行重新设计,或按照这些使用的步骤用到你自己的...

ch2004
2012/04/03
160
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周一乱弹 —— 年迈渔夫遭黑帮袭抢

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @tom_tdhzz :#今日歌曲推荐# 分享Elvis Presley的单曲《White Christmas》: 《White Christmas》- Elvis Presley 手机党少年们想听歌,请使劲...

小小编辑
今天
1K
20
CentOS7.6中安装使用fcitx框架

内容目录 一、为什么要使用fcitx?二、安装fcitx框架三、安装搜狗输入法 一、为什么要使用fcitx? Gnome3桌面自带的输入法框架为ibus,而在使用ibus时会时不时出现卡顿无法输入的现象。 搜狗和...

技术训练营
昨天
5
0
《Designing.Data-Intensive.Applications》笔记 四

第九章 一致性与共识 分布式系统最重要的的抽象之一是共识(consensus):让所有的节点对某件事达成一致。 最终一致性(eventual consistency)只提供较弱的保证,需要探索更高的一致性保证(stro...

丰田破产标志
昨天
8
0
docker 使用mysql

1, 进入容器 比如 myslq1 里面进行操作 docker exec -it mysql1 /bin/bash 2. 退出 容器 交互: exit 3. mysql 启动在容器里面,并且 可以本地连接mysql docker run --name mysql1 --env MY...

之渊
昨天
16
0
python数据结构

1、字符串及其方法(案例来自Python-100-Days) def main(): str1 = 'hello, world!' # 通过len函数计算字符串的长度 print(len(str1)) # 13 # 获得字符串首字母大写的...

huijue
昨天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部