iOS 之UI进阶-CALayer创建时钟

640?wx_fmt=jpeg

黑客技术 点击右侧关注,了解黑客的世界! 640?wx_fmt=jpeg

640?wx_fmt=jpeg

Java开发进阶 点击右侧关注,掌握进阶之路! 640?wx_fmt=jpeg

640?wx_fmt=jpeg

Linux编程 点击右侧关注,免费入门到精通! 640?wx_fmt=jpeg


640?wx_fmt=gif


CALayerUIView的区别


举个?


在一个白色的view上添加一个红色的layer和一个红色的view的区别是什么?


在一个白色的view上添加一个红色的layer就是一张白色的纸上有一块区域被涂成了红色


在一个白色的view上添加一个红色的view就是一张白色的纸上又放了一张红色的纸


事实上,view之所以能够显示在屏幕上完全是因为它内部的一个图层。
换句话说view不具备显示功能,它只是为了处理和响应事件,layer才具备显示功能


首先创建表盘


 //创建一个表盘    CALayer* clock = [[CALayer alloc]init];    clock.bounds = CGRectMake(0, 0, 200, 200);    clock.position = CGPointMake(200, 200);    clock.contents = (__bridge id)[UIImage imageNamed:@"clock"].CGImage;    clock.cornerRadius = 100;    clock.masksToBounds = YES;

创建秒针之前先来说一说CALayer锚点问题


锚点的类型是CGPoint类型,默认值是(0.5~0.5)即中心点,取值范围都是(0~1),也就是说通过(0~1)的取值我们可以定位到layer上的任意一个点上。


而你所设置的锚点的位置就是position所设置的位置,通过调整锚点的位置我们可以对layer进行微调。


具体可以看下图


640?wx_fmt=other


创建秒针

 
 

时钟刷新


CADisplayLink是一种以屏幕刷新频率为触发的时钟机制,每秒大概刷新60次,一般的动画效果都会采用CADisplayLink作为定时器,这样动画看上去才更加流畅。


创建计时器


 
 
刷新方法


-(void)timeChanged{    //计算一秒钟旋转的角度    CGFloat angle = 2 * M_PI / 60;        NSDate* date = [NSDate date];    NSCalendar* calendar = [NSCalendar currentCalendar];    CGFloat time = [calendar component:NSCalendarUnitSecond fromDate:date];    self.second.affineTransform = CGAffineTransformMakeRotation(time*angle);}


CGAffineTransformMakeCGAffineTransform的区别


用旋转举例说明


 
 

 推荐↓↓↓ 

640?wx_fmt=jpeg

?16个技术公众号】都在这里!

涵盖:程序员大咖、源码共读、程序员共读、数据结构与算法、黑客技术和网络安全、大数据科技、编程前端、Java、Python、Web编程开发、Android、iOS开发、Linux、数据库研发、幽默程序员等。

640?wx_fmt=png万水千山总是情,点个 “ 在看” 行不行
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值