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 ...
随机推荐
- 分享Kali Linux 2016.2第43周镜像
分享Kali Linux 2016.2第43周镜像Kali Linux官方于10月23日如约发布了2016.2第43周镜像.和以往一样,此次镜像包含了11个镜像文件,包含PC端的32和64位镜像,还有 ...
- PHP 垃圾回收机制
PHP垃圾回收说到底是对变量及其所关联内存对象的操作, 所以在讨论PHP的垃圾回收机制之前,先简要介绍PHP中变量及其内存对象的内部表示(其C源代码中的表示). PHP官方文档中将PHP中的变量划分为 ...
- delphi 中TStringList Clear 方法的时候该对象有没有被释放
delphi 中TStringList 通过function AddObject(const S: string; AObject: TObject): Integer; 方法添加了一个对象,请问我在 ...
- windows安装python问题
在安装python过程中,直接下一步,安装好了,配置环境变量的时候如果找不到安装路径在哪,打开开始菜单,在左边的程序栏找到: 这样就找到了,然后在系统变量中加入即可.如果找不到的话,以联想电脑为例一般 ...
- 选项卡 tab切换
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- WPF ComboBox Binding
public ConnectionViewModel { private readonly CollectionView _phonebookEntries; private string _phon ...
- BZOJ3723 : PA2014Final Gra w podwajanie
暴力搜索出所有可行的形状,可以发现本质不同的形状数只有6000个左右. 对于每个形状,它的大小不超过$8\times 8$,故可以按照右下角为原点重建坐标系,用一个unsigned long long ...
- Spring In Action(第三版)读书笔记
第一章 Spring之旅 POJO: plain old java object 简单的java对象 DI:Dependency Injection 依赖注入 构造器注入:构造时作为构造器参数传入 p ...
- Codeforces Round #246 (Div. 2) A. Choosing Teams
给定n k以及n个人已参加的比赛数,让你判断最少还能参加k次比赛的队伍数,每对3人,每个人最多参加5次比赛 #include <iostream> using namespace std; ...
- ACM D的小L
D的小L 时间限制:4000 ms | 内存限制:65535 KB 难度:2 描述 一天TC的匡匡找ACM的小L玩三国杀,但是这会小L忙着哩,不想和匡匡玩但又怕匡匡生气,这时小L给 ...