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 ...
随机推荐
- css3 总结03
box-flex: 设置或检索弹性盒模型对象的子元素如何分配其剩余空间. <ul id="box"> <li>a</li> <li> ...
- Ubuntu mysql
To install mysql database in the ubuntu: 1. sudo apt-get install mysql-server 2. apt-get isntall ...
- 【第三方登录】之QQ第三方登录
最近公司做了个网站,需要用到第三方登录的东西.有QQ第三方登录,微信第三方登录.先把QQ第三方登录的代码列一下吧. public partial class QQBack : System.Web.U ...
- 使用Maven构建Android项目
http://www.ikoding.com/build-android-project-with-maven/ 之前一直在做WEB前端项目,前段时间接手第一个Android项目,拿到代码之后,先试着 ...
- HDU5855 Less Time, More profit(最大权闭合子图)
题目 Source http://acm.hdu.edu.cn/showproblem.php?pid=5855 Description The city planners plan to build ...
- SQL Prompt
SQL Prompt介绍编辑 SQL Prompt[1] 是一款拥有SQL智能提示功能的SQL Server和VS插件.SQL Prompt能根据数据库的对象名称,语法和用户编写的代码片段自动进行检索 ...
- BZOJ3946 : 无聊的游戏
首先把所有串拼起来,后插入的串在前面,得到一个大串. 那么任意时刻,每个串是由这个大串的若干个不相交的子串从左到右拼接而成. 用线段树维护每个串,每个节点维护一个标记,表示区间内的串要加上什么前缀. ...
- 转:jQuery插件开发精品教程,让你的jQuery提升一个台阶
要说jQuery 最成功的地方,我认为是它的可扩展性吸引了众多开发者为其开发插件,从而建立起了一个生态系统.这好比大公司们争相做平台一样,得平台者得天下.苹果,微软,谷歌等巨头,都有各自的平台及生态圈 ...
- [转]as3事件流机制彻底理解
题记: 看过网上一些as3事件流的教程,觉得大多都讲得不甚清楚,让人不能直观的理解事件流.而这篇教程以将事件流过程比喻成捕鱼过程,形象简单. 在此基础上对于as3事件流总算有了全面的理解.事件流机制说 ...
- Maven构建简单的多模块项目
复制于http://www.cnblogs.com/luxh/p/3506750.html 做个记录 一般web项目会进行分模块开发.这里简单分为domain(领域层).persist(持久层).se ...