时钟动画制作
来源:互联网 发布:淘宝买家问质量怎么样 编辑:程序博客网 时间:2024/05/21 11:12
// CZViewController.m
// 04-定位点动画(时钟动画)
//
// Created by apple on 16/07/14.
// Copyright (c) 2014年itcast. All rights reserved.
//
// 04-定位点动画(时钟动画)
//
// Created by apple on 16/07/14.
// Copyright (c) 2014年itcast. All rights reserved.
//
效果图
#import "CZViewController.h"
@interface CZViewController ()
// 钟表
@property (nonatomic,strong)UIView *clockView;
// 秒针
@property (nonatomic,strong)UIView *secondView;
// 分针
@property (nonatomic,strong)UIView *minuteView;
// 时针
@property (nonatomic,strong)UIView *hourView;
// 固定的钉
@property (nonatomic,strong)UIView *nailView;
@end
@implementation CZViewController
/**
1. 画钟表
2. 画秒针
3. 时钟动画让秒针旋转
*/
//懒加载创建表盘
- (UIView *)clockView
{
if (_clockView ==nil) {
//实例化表盘
_clockView = [[UIViewalloc]initWithFrame:CGRectMake(60,100,200, 200)];
//设置表盘背景图片
_clockView.backgroundColor = [UIColorcolorWithPatternImage:[UIImageimageNamed:@"42d75fd82eafc032a86bfd4eff1cd4bc"]];
//设置表盘图层圆角半径
_clockView.layer.cornerRadius =100;
//设置表盘图层边线
_clockView.layer.borderColor = [UIColordarkGrayColor].CGColor;
//边框的宽
_clockView.layer.borderWidth =3.0;
// 秒针
_secondView = [[UIViewalloc]initWithFrame:CGRectMake(0,0,2.0,100.0)];
// _secondView.center = CGPointMake(100, 55);
// center本质上就是layer的position
_secondView.center =CGPointMake(100,100);//中心点
_secondView.layer.anchorPoint =CGPointMake(0.5,0.75);//定位点
_secondView.backgroundColor = [UIColorredColor];//颜色
// 分针
_minuteView = [[UIViewalloc]initWithFrame:CGRectMake(0,0,4.0,80.0)];
// _secondView.center = CGPointMake(100, 55);
// center本质上就是layer的position
_minuteView.center =CGPointMake(100,100);
_minuteView.layer.anchorPoint =CGPointMake(0.5,0.85);
_minuteView.backgroundColor = [UIColorblackColor];
_hourView = [[UIViewalloc]initWithFrame:CGRectMake(0,0,6.0,60.0)];
// _secondView.center = CGPointMake(100, 55);
//时针
// center本质上就是layer的position
_hourView.center =CGPointMake(100,100);
_hourView.layer.anchorPoint =CGPointMake(0.5,0.9);
_hourView.backgroundColor = [UIColorblackColor];
//实例化钉
_nailView = [[UIViewalloc]initWithFrame:CGRectMake(0,0,6,6)];
//中心点
_nailView.center =_hourView.center;
//背景颜色
_nailView.backgroundColor = [UIColoryellowColor];
//设置钉圆角半径
_nailView.layer.cornerRadius =3;
//设置钉边线
_nailView.layer.borderColor = [UIColororangeColor].CGColor;
//边框的宽
_nailView.layer.borderWidth =1.0;
//把三个针添加到表盘上
[_clockView addSubview:_hourView];
[_clockView addSubview:_minuteView];
[_clockView addSubview:_secondView];
[_clockView addSubview:_nailView];
//把表盘添加到view上
[self.viewaddSubview:_clockView];
}
return _clockView;
}
- (void)viewDidLoad
{
[super viewDidLoad];
//设置背景颜色
self.view.backgroundColor = [UIColorlightGrayColor];
[self clockView];
// 秒针旋转
// self.secondView.transform = CGAffineTransformMakeRotation(M_PI_2);
// 时钟动画,定时器
// [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(updateTimer) userInfo:nil repeats:YES];
//CADisplayLink也是一个定时器用于刷新
//声明一个定时器
// link默认是1/60秒执行一次
CADisplayLink *link = [CADisplayLinkdisplayLinkWithTarget:selfselector:@selector(updateTimer)];
//执行定时器把定时器放在主运行循环中执行
[link addToRunLoop:[NSRunLoopmainRunLoop]forMode:NSDefaultRunLoopMode];
}
#define degree2angle(angle) ((angle) * M_PI /180)
- (void)updateTimer
{
// NSLog(@"%s", __func__);
// 实例化日历对象
NSCalendar *calendar = [NSCalendarcurrentCalendar];
// 获取当前时间的秒数
NSDateComponents *comps = [calendarcomponents:NSCalendarUnitSecondfromDate:[NSDatedate]];
// 获取当前时间的分钟数
NSDateComponents *minute = [calendarcomponents:NSCalendarUnitMinutefromDate:[NSDatedate]];
// 获取当前时间的分钟数
NSDateComponents *hour = [calendarcomponents:NSCalendarUnitHourfromDate:[NSDatedate]];
// NSLog(@"%.2f", 10/0.3);
// 设置秒针的旋转
CGFloat angle = degree2angle(comps.second * 360 / 60);
self.secondView.transform =CGAffineTransformMakeRotation(angle);
// 设置分针的旋转
CGFloat angleM = degree2angle(minute.minute * 360 / 60);
self.minuteView.transform =CGAffineTransformMakeRotation(angleM);
// 设置时针的旋转
CGFloat angleH = degree2angle(hour.hour*30 + minute.minute/10.0 *5);
self.hourView.transform =CGAffineTransformMakeRotation(angleH);
// (hour*30) + (minutes/10)*6
}
@end
#import "CZViewController.h"
@interface CZViewController ()
// 钟表
@property (nonatomic,strong)UIView *clockView;
// 秒针
@property (nonatomic,strong)UIView *secondView;
// 分针
@property (nonatomic,strong)UIView *minuteView;
// 时针
@property (nonatomic,strong)UIView *hourView;
// 固定的钉
@property (nonatomic,strong)UIView *nailView;
@end
@implementation CZViewController
/**
1. 画钟表
2. 画秒针
3. 时钟动画让秒针旋转
*/
//懒加载创建表盘
- (UIView *)clockView
{
if (_clockView ==nil) {
//实例化表盘
_clockView = [[UIViewalloc]initWithFrame:CGRectMake(60,100,200, 200)];
//设置表盘背景图片
_clockView.backgroundColor = [UIColorcolorWithPatternImage:[UIImageimageNamed:@"42d75fd82eafc032a86bfd4eff1cd4bc"]];
//设置表盘图层圆角半径
_clockView.layer.cornerRadius =100;
//设置表盘图层边线
_clockView.layer.borderColor = [UIColordarkGrayColor].CGColor;
//边框的宽
_clockView.layer.borderWidth =3.0;
// 秒针
_secondView = [[UIViewalloc]initWithFrame:CGRectMake(0,0,2.0,100.0)];
// _secondView.center = CGPointMake(100, 55);
// center本质上就是layer的position
_secondView.center =CGPointMake(100,100);//中心点
_secondView.layer.anchorPoint =CGPointMake(0.5,0.75);//定位点
_secondView.backgroundColor = [UIColorredColor];//颜色
// 分针
_minuteView = [[UIViewalloc]initWithFrame:CGRectMake(0,0,4.0,80.0)];
// _secondView.center = CGPointMake(100, 55);
// center本质上就是layer的position
_minuteView.center =CGPointMake(100,100);
_minuteView.layer.anchorPoint =CGPointMake(0.5,0.85);
_minuteView.backgroundColor = [UIColorblackColor];
_hourView = [[UIViewalloc]initWithFrame:CGRectMake(0,0,6.0,60.0)];
// _secondView.center = CGPointMake(100, 55);
//时针
// center本质上就是layer的position
_hourView.center =CGPointMake(100,100);
_hourView.layer.anchorPoint =CGPointMake(0.5,0.9);
_hourView.backgroundColor = [UIColorblackColor];
//实例化钉
_nailView = [[UIViewalloc]initWithFrame:CGRectMake(0,0,6,6)];
//中心点
_nailView.center =_hourView.center;
//背景颜色
_nailView.backgroundColor = [UIColoryellowColor];
//设置钉圆角半径
_nailView.layer.cornerRadius =3;
//设置钉边线
_nailView.layer.borderColor = [UIColororangeColor].CGColor;
//边框的宽
_nailView.layer.borderWidth =1.0;
//把三个针添加到表盘上
[_clockView addSubview:_hourView];
[_clockView addSubview:_minuteView];
[_clockView addSubview:_secondView];
[_clockView addSubview:_nailView];
//把表盘添加到view上
[self.viewaddSubview:_clockView];
}
return _clockView;
}
- (void)viewDidLoad
{
[super viewDidLoad];
//设置背景颜色
self.view.backgroundColor = [UIColorlightGrayColor];
[self clockView];
// 秒针旋转
// self.secondView.transform = CGAffineTransformMakeRotation(M_PI_2);
// 时钟动画,定时器
// [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(updateTimer) userInfo:nil repeats:YES];
//CADisplayLink也是一个定时器用于刷新
//声明一个定时器
// link默认是1/60秒执行一次
CADisplayLink *link = [CADisplayLinkdisplayLinkWithTarget:selfselector:@selector(updateTimer)];
//执行定时器把定时器放在主运行循环中执行
[link addToRunLoop:[NSRunLoopmainRunLoop]forMode:NSDefaultRunLoopMode];
}
#define degree2angle(angle) ((angle) * M_PI /180)
- (void)updateTimer
{
// NSLog(@"%s", __func__);
// 实例化日历对象
NSCalendar *calendar = [NSCalendarcurrentCalendar];
// 获取当前时间的秒数
NSDateComponents *comps = [calendarcomponents:NSCalendarUnitSecondfromDate:[NSDatedate]];
// 获取当前时间的分钟数
NSDateComponents *minute = [calendarcomponents:NSCalendarUnitMinutefromDate:[NSDatedate]];
// 获取当前时间的分钟数
NSDateComponents *hour = [calendarcomponents:NSCalendarUnitHourfromDate:[NSDatedate]];
// NSLog(@"%.2f", 10/0.3);
// 设置秒针的旋转
CGFloat angle = degree2angle(comps.second * 360 / 60);
self.secondView.transform =CGAffineTransformMakeRotation(angle);
// 设置分针的旋转
CGFloat angleM = degree2angle(minute.minute * 360 / 60);
self.minuteView.transform =CGAffineTransformMakeRotation(angleM);
// 设置时针的旋转
CGFloat angleH = degree2angle(hour.hour*30 + minute.minute/10.0 *5);
self.hourView.transform =CGAffineTransformMakeRotation(angleH);
// (hour*30) + (minutes/10)*6
}
@end
0 0
- 时钟动画制作
- 使用Unity制作简单时钟动画
- canvas 动画制作——时钟
- 【html5】如何用HTML5中的canvas制作动画时钟呢?
- 时钟制作
- 动画时钟。。。
- 时钟动画
- J2ME制作一个时钟
- Flash时钟制作
- Silverlight 制作的时钟
- Flash制作时钟
- java 制作电子时钟
- QPushButton 制作电子时钟
- js制作网页时钟
- javascript制作简易时钟
- canvas制作时钟
- javaScript制作时钟
- javascript制作的时钟
- 遇见旅行APP应用 隐私声明
- mysql中的基本运行指令
- 软件测试
- 深入学习Tomcat----自己动手写服务器(附服务器源码)
- 群芳争春------编程语言百家争鸣
- 时钟动画制作
- POJ-----3268双向最短路
- solrj 文件索引问题
- plsql连接oracle查询出现中文乱码,windows系统字符集设置
- Android Continuous Integration with Jenkins
- LightOJ 1294
- win32 下查看端口占用并释放相应进程
- 1086: [SCOI2005]王室联邦 (树分块)
- 深入理解DIP、IoC、DI以及IoC容器