钟表效果

最近在做一个项目,上面有钟表的显示。钟表的显示无非用到角度旋转。先看下效果图:

制作过程如下:

先切出四张图:表盘,三个指针(沿着边界切)

代码如下: 利用CGAffineTransformMakeRotation顺时针旋转,计算好弧度传入。

//UI

//注意指针的添加顺序

UIImageView *watchImageView =[[UIImageViewalloc]initWithFrame:CGRectMake(0,0,self.width,self.height)];

watchImageView.image =PNGImage(@"watch");

[selfaddSubview:watchImageView];

//因为 CGAffineTransformMakeRotation旋转是以中心点进行旋转,所以要在各个指针下创建一个底部视图,然后把指针放上去,定好位置。使得实现指针旋转效果。

UIView *minuteView = [[UIViewalloc]initWithFrame:CGRectMake((watchImageView.width
-6.0)/2.0,0,6.0,160)];

minuteView.backgroundColor =ClearColor;

[selfaddSubview:minuteView];

UIImageView *minuteImageView = [[UIImageViewalloc]initWithFrame:CGRectMake(0,8,6.0,75)];

minuteImageView.image =PNGImage(@"minute");

[minuteViewaddSubview:minuteImageView];

UIView *hourView = [[UIViewalloc]initWithFrame:CGRectMake((watchImageView.width
-6.0)/2.0,0,6.0,160)];

hourView.backgroundColor =ClearColor;

[selfaddSubview:hourView];

UIImageView *hourImageView = [[UIImageViewalloc]initWithFrame:CGRectMake(0,18,6.0,65)];

hourImageView.image =PNGImage(@"hour");

[hourViewaddSubview:hourImageView];

UIView *secondView = [[UIViewalloc]initWithFrame:CGRectMake((watchImageView.width
-6.0)/2.0,0,6.0,160)];

[selfaddSubview:secondView];

UIImageView *secondImageView = [[UIImageViewalloc]initWithFrame:CGRectMake(0,5,6.0,90)];

secondImageView.image =PNGImage(@"second");

[secondViewaddSubview:secondImageView];

//根据当前时间初始角度

NSDate *today = [NSDatedate];

NSCalendar *greCalendar = [[NSCalendaralloc]initWithCalendarIdentifier:NSCalendarIdentifierGregorian];

NSDateComponents *dateComponents = [greCalendarcomponents:NSCalendarUnitHour |NSCalendarUnitMinute
| NSCalendarUnitSecondfromDate:today];

NSInteger hour = dateComponents.hour;

NSInteger minute = dateComponents.minute;

NSInteger second = dateComponents.second;

float hourAngle = hour/6.0 *M_PI;

float minuteAngle = minute/30.0 *M_PI;

float secondAngle = second/30.0 *M_PI;

hourView.transform =CGAffineTransformMakeRotation(hourAngle);

minuteView.transform =CGAffineTransformMakeRotation(minuteAngle);

secondView.transform =CGAffineTransformMakeRotation(secondAngle);

//起定时器,每0.05s刷新一次,实现均匀旋转

[NSTimerscheduledTimerWithTimeInterval:0.05target:selfselector:@selector(watchRotation)userInfo:nilrepeats:YES];

// 计算得知,每0.05s,秒针旋转M_PI/600,分针旋转M_PI/36000,时针旋转M_PI/43200

- (void)watchRotation

{

_secondAngle +=M_PI/600;

if (_secondAngle/2.0 >M_PI) {

_secondAngle =0;  //注意归0

}

_watchImageView.secondView.transform =CGAffineTransformMakeRotation(_secondAngle);

_minuteAngle +=M_PI/36000;

if (_minuteAngle/2.0 >M_PI) {

_minuteAngle =0;

}

_watchImageView.minuteView.transform =CGAffineTransformMakeRotation(_minuteAngle);

_hourAngle +=M_PI/43200;

if (_hourAngle/2.0 >M_PI) {

_hourAngle =0;

}

_watchImageView.hourView.transform =CGAffineTransformMakeRotation(_hourAngle);

}

这就哦了,这个可以进行封装,在此就不进行赘述了。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-07 18:26:47

钟表效果的相关文章

用CSS3实现钟表效果

背景:最近在学习CSS3,看到了一个小案例,通过自己的学习,动手实现了它,现在把它分享出来. 效果图 实现过程 1.首先我们需要在页面中写出一个静态的钟表效果.首先我们需要一个表盘div wrap 对其进行简单的样式设置,用border-radius属性将其设置成圆形. <div id="wrap"></div> #wrap{width:200px; height:200px; border:2px solid #000; margin:100px auto;b

WPF钟表效果实现

WPF在样式定义和UI动画上面相对于以前的技术有了不少的提升,下面给出WPF技术实现钟表的效果: 1.Visual Studio新建一个WPF应用程序,命名为WpfClock,新建一个images文件夹,并准备一个钟表的背景图片和程序图标素材. 2.编辑MainWindow.xaml文件,对UI进行定制,代码如下(指针都是用Rectangle实现的,当然可以用图片代替): 1 <Window x:Class="WpfClock.MainWindow" 2 xmlns="

python之tk简单学习之一个简单的钟表效果

# -*- coding: utf-8 -*- # python:2.x __author__ = 'Administrator' #TK实现一个秒表效果 #目的:是为了简单学习下TK from time import * from Tkinter import * class StopWatch(Frame): mesc=50 def __init__(self,parent=None,**kw): Frame.__init__(self,parent,kw) self.__start=0.0

代码写响应式时钟效果

只需3个文件,就可以实现钟表效果,还是先看图再来看代码效果 时间是用的北京时间 再来看它的源代 html文件 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml&qu

JS 简单钟表

<!doctype html> <html> <head> <meta charset="utf-8"> <title>无标题文档</title> <script> function startTime() { var d = new Date(); //声明一个Date对象,默认是当前时间 var h = d.getHours(); //以下分别获取d的小时,分钟,秒 var m = d.getMin

用CSS3制作50个超棒动画效果教程

CSS3为我们带来了令人惊叹的新特性,而最有趣的就是CSS动画.向大家推荐这50个CSS动画集合可以让你通过使用JavaScript函数来让动画更生动.为了能够预览到这些惊人的CSS3技术带来的动画特效,请大家使用如Safari和Chrome这类基于WebKit内核的浏览器.(IE浏览器谢绝观赏~) 1.CSS3实现钟表效果(基于jQuery) 使用CSS3的基本变形特性:rotate,并结合了jQuery这类javaScript框架制作的CSS3时钟效果. 2.模拟时钟 模拟时钟基于过渡web

赞!15个来自 CodePen 的酷炫 CSS 动画效果

CodePen 是一个在线的前端代码编辑和展示网站,能够编写代码并即时预览效果.你在上面可以在线分享自己的 Web 作品,也可以欣赏到世界各地的优秀开发者在网页中实现的各种令人惊奇的效果. 今天这篇文章为大家挑选了15个超炫的 CSS 动画效果的例子,这些 Demo 可以说都是艺术品.(为保证最佳的效果,请在 Chrome.Firefox 和 Safari 等现代浏览器中浏览) 1. JavaScript Mickey Watch Apple watch like Mickey watch by

cs3完成的钟表

先看一下效果图,背景表盘是一个底图.选一个漂亮的底图,整体钟表效果还是不错的. 下边上代码 <!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> &

Web前端总结(小伙伴的)

以下总结是我工作室的小伙伴的心得,可以参考一下 html+css知识点总结 HTMl+CSS知识点收集 1.letter-spacing和word-spacing的区别 letter-spacing:指字母间距 word-spacing:指单词间距 2.列举常见的复合属性(常见的17种,有可能结合js问): Background,Font,Border,Padding,Margin,list-style 3.img标签的属性alt和title的区别 Alt:图片加载不了的时候用以替代图片信息,同