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 ...
随机推荐
- iOS10 UI教程视图的绘制与视图控制器和视图
iOS10 UI教程视图的绘制与视图控制器和视图 iOS10 UI视图的绘制 iOS10 UI教程视图的绘制与视图控制器和视图,在iOS中,有很多的绘图应用.这些应用大多是在UIView上进行绘制的. ...
- Swift3.0语言教程使用Unicode范式标准化获取字符串
Swift3.0语言教程使用Unicode范式标准化获取字符串 Swift3.0语言教程使用Unicode范式标准化获取字符串,在NSString中可以使用4个属性去使用Unicode范式标准化获取字 ...
- AutoMapper简明教程(学习笔记)
].FirstName + nameDto12[].LastName);Console.WriteLine();//Console.ReadKey();//emitMapper error//List ...
- 设置随机启动--《用delphi开发共享软件》-15.1任务管理器
在设置窗体中 chkAutoStart: TCheckBox; 在设置窗体中 chkAutoStart: TCheckBox; procedure TFrmSetup.FormCreate(Sende ...
- PyCharm默认快捷键
转自:http://www.2cto.com/os/201410/341542.html 1.编辑(Editing)Ctrl + Space 基本的代码完成(类.方法.属性)Ctrl + Alt + ...
- 优化WPF 3D性能
Maximize WPF 3D Performance .NET Framework 4.5 As you use the Windows Presentation Foundation (WPF ...
- Leap Motion发布新平台,直击下一代移动端VR/AR手部追踪
2013年,动作捕捉技术公司Leap Motion发布了面向PC的体感控制器,不过销量并不乐观.随着2014年虚拟现实技术的再一次兴起,它发布一款用于Oculus Rift的附加设备,从而正式登上VR ...
- Android 热补丁和热修复
参考: 各大热补丁方案分析和比较 Android App 线上热修复方案 1. Xposed Github地址:https://github.com/rovo89/Xposed 项目描述:Xposed ...
- ACM 众数问题
众数问题 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 所谓众数,就是对于给定的含有N个元素的多重集合,每个元素在S中出现次数最多的成为该元素的重数, 多重集合S重 ...
- [深入浅出Windows 10]应用实战:Bing在线壁纸
本章介绍一个使用Bing搜索引擎背景图接口实现的一个应用——Bing在线壁纸,讲解如何使用网络的接口来实现一个壁纸下载,壁纸列表展示和网络请求封装的内容.通过该例子我们可以学习到如何使用网络编程的知识 ...