IOS第18天(4,核心动画,时钟效果,定时器,图片旋转角度,CALayer 锚点,获取当前,小时,秒,分)
****
#import "HMViewController.h" // 每秒秒针转6度
#define perSecendA 6 // 每分钟分针转6度
#define perMinuteA 6 // 每小时时针转6度
#define perHourA 30 // 每分钟时针转6度
#define perMinuteHourA 0.5 #define angle2radian(x) ((x) / 180.0 * M_PI) @interface HMViewController ()
{
CALayer *_second;
CALayer *_minute;
CALayer *_hour;
}
@property (weak, nonatomic) IBOutlet UIView *redView;
@property (weak, nonatomic) IBOutlet UIImageView *clockView; @end @implementation HMViewController - (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
// 1.添加秒针
[self addSecond]; // 2.添加分针
[self addMintue]; // 3.添加时针
[self addHour]; // 创建定时器
[NSTimer scheduledTimerWithTimeInterval: target:self selector:@selector(update) userInfo:nil repeats:YES]; [self update];
} - (void)addHour
{
CGFloat imageW = _clockView.bounds.size.width;
CGFloat imageH = _clockView.bounds.size.height; // 1.添加时针
CALayer *hour = [CALayer layer]; // 2.设置锚点
hour.anchorPoint = CGPointMake(0.5, ); // 3.设置位置
hour.position = CGPointMake(imageW * 0.5, imageH * 0.5); // 4.设置尺寸
hour.bounds = CGRectMake(, , , imageH * 0.5 - ); // 5.红色
hour.backgroundColor = [UIColor blackColor].CGColor; hour.cornerRadius = ; // 添加到图层上
[_clockView.layer addSublayer:hour]; _hour = hour;
} // 添加分针
- (void)addMintue
{
CGFloat imageW = _clockView.bounds.size.width;
CGFloat imageH = _clockView.bounds.size.height; // 1.添加分针
CALayer *minute = [CALayer layer]; // 2.设置锚点
minute.anchorPoint = CGPointMake(0.5, ); // 3.设置位置
minute.position = CGPointMake(imageW * 0.5, imageH * 0.5); // 4.设置尺寸
minute.bounds = CGRectMake(, , , imageH * 0.5 - ); // 5.红色
minute.backgroundColor = [UIColor blueColor].CGColor; // 添加到图层上
[_clockView.layer addSublayer:minute]; _minute = minute;
} // 添加秒针
- (void)addSecond
{
CGFloat imageW = _clockView.bounds.size.width;
CGFloat imageH = _clockView.bounds.size.height; // 1.添加秒针
CALayer *second = [CALayer layer]; // 2.设置锚点
second.anchorPoint = CGPointMake(0.5, ); // 3.设置位置
second.position = CGPointMake(imageW * 0.5, imageH * 0.5); // 4.设置尺寸
second.bounds = CGRectMake(, , , imageH * 0.5 - ); // 5.红色
second.backgroundColor = [UIColor redColor].CGColor; // 添加到图层上
[_clockView.layer addSublayer:second]; _second = second;
} - (void)update
{
// 获取秒数
// 获取日历对象
NSCalendar *calendar = [NSCalendar currentCalendar]; // 获取日期组件
NSDateComponents *compoents = [calendar components:NSCalendarUnitSecond | NSCalendarUnitMinute | NSCalendarUnitHour fromDate:[NSDate date]]; // 获取秒数
CGFloat sec = compoents.second; // 获取分钟
CGFloat minute = compoents.minute; // 获取小时
CGFloat hour = compoents.hour; // 算出秒针旋转多少°
CGFloat secondA = sec * perSecendA; // 算出分针旋转多少°
CGFloat minuteA = minute * perMinuteA; // 算出时针旋转多少°
CGFloat hourA = hour * perHourA;
hourA += minute * perMinuteHourA; // 旋转秒针
_second.transform = CATransform3DMakeRotation(angle2radian(secondA), , , ); // 旋转分针
_minute.transform = CATransform3DMakeRotation(angle2radian(minuteA), , , ); // 旋转时针
_hour.transform = CATransform3DMakeRotation(angle2radian(hourA), , , ); }
@end
IOS第18天(4,核心动画,时钟效果,定时器,图片旋转角度,CALayer 锚点,获取当前,小时,秒,分)的更多相关文章
- IOS第18天(9,核心动画-动画组)
****动画组 // 核心动画都是假象,不能改变layer的真实属性的值// 展示的位置和实际的位置不同.实际位置永远在最开始位置 #import "HMViewController.h&q ...
- IOS第18天(1,核心动画layer, 旋转,缩放,平移,边框,剪裁,圆角)
****动画效果 - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { [UIView animateWithDurat ...
- IOS第18天(10,核心动画-转盘,自定义buton,旋转动画)
*****HMViewController.m #import "HMViewController.h" #import "HMWheelView.h" @in ...
- IOS第18天(8,核心动画转场动画)
***翻页效果 #import "HMViewController.h" @interface HMViewController () @property (weak, nonat ...
- [iOS UI进阶 - 6.1] 核心动画CoreAnimation
A.基本知识 1.概念 Core Animation是一组非常强大的动画处理API,使用它能做出非常炫丽的动画效果,而且往往是事半功倍,使用它需要先添加QuartzCore.framework和引入对 ...
- [iOS UI进阶 - 6.2] 核心动画CoreAnimation 练习代码
A.基本用法 1.CABasicAnimation // // ViewController.m // CoreAnimationTest // // Created by hellovoidworl ...
- iOS UI进阶-3.0 核心动画
Core Animation是一组非常强大的动画处理API,使用它能做出非常炫丽的动画效果,而且往往是事半功倍,使用它需要先添加QuartzCore.framework和引入对应的框架<Quar ...
- ios开发图层layer与核心动画二:CATransform3D,CAlayear和UIView区别,layer的position和anchorpoint
一:CATransform3D #import "ViewController.h" @interface ViewController () @property (weak, n ...
- ios开发之图层与核心动画一:图层CALayer的认识
#import "ViewController.h" @interface ViewController () @property (weak, nonatomic) IBOutl ...
随机推荐
- SpringHttpInvoker解析1-使用示例
HTTP invoker是一个新的远程调用模型,作为Spring框架的一部分,来执行基于HTTP的远程调用(让防火墙可以接受),并使用Java的序列化机制. 服务端 定义服务接口UserService ...
- (转)qsort和sort
1.qsort函数: 原 型: void qsort(void *base, int nelem, int width, int (*fcmp)(const void *,const void *)) ...
- CSS3属性
1.边框阴影(box-shadow ): 投影方式,X轴偏移,Y轴偏移,阴影模糊半径,阴影扩展半径,颜色 2.边框图像(border-image) 3.边框圆角:border-radius:5px 4 ...
- idea 开发环境jdk崩溃
## A fatal error has been detected by the Java Runtime Environment:## EXCEPTION_ACCESS_VIOLATION (0x ...
- 并查集(删除) UVA 11987 Almost Union-Find
题目传送门 题意:训练指南P246 分析:主要是第二种操作难办,并查集如何支持删除操作?很巧妙的方法:将并查集树上p的影响消除,即在祖先上(sz--, sum -= p),然后为p换上马甲:id[p] ...
- python 代码片段20
#coding=utf-8 # 函数 def foo(x): print x foo(123) # import httplib def check_web_server(host,port,path ...
- Moscow Pre-Finals Workshop 2016. National Taiwan U Selection
A. As Easy As Possible 每个点往右贪心找最近的点,可以得到一棵树,然后倍增查询即可. 时间复杂度$O((n+m)\log n)$. #include <bits/stdc+ ...
- React.js 常用技术要点
最近在公司的一个移动端WEB产品中使用了React这个框架(并不是React-Native),记录一下在开发过程中遇到的各种问题以及对应的解决方法,希望能对读者有所帮助. React原则 React不 ...
- [知识点]Cantor展开
// 此博文为迁移而来,写于2015年3月14日,不代表本人现在的观点与看法.原始地址:http://blog.sina.com.cn/s/blog_6022c4720102vtyo.html 1.含 ...
- box-sizing的相关属性
box-sizing有三个属性,分别是:content-box,border-box,inherit (1)content-box:在宽度和高度之外绘制元素的内边距和边框(默认属性) (2)borde ...