iOS实现简易钟表

本文实例为大家分享了iOS实现简易钟表的具体代码,供大家参考,具体内容如下

效果图:

注意:表盘是一个UIImageView控件,设置image为表盘图片

核心代码:

//
// ViewController.m
// 时钟
//
// Created by llkj on 2017/8/29.
// Copyright © 2017年 LayneCheung. All rights reserved.
//

#import "ViewController.h"

//每一秒旋转多少度
#define perSecA 6
//每一分旋转多少度
#define perMinA 6
//每一小时旋转多少度
#define perHourA 30

//每一分时针旋转的度数
#define perMinHour 0.5
//角度转弧度
#define angle2Rad(angle) ((angle) / 180.0 * M_PI)
@interface ViewController ()

@property (weak, nonatomic) IBOutlet UIImageView *clockView;
@property (nonatomic, weak) CALayer *secL;
@property (nonatomic, weak) CALayer *minL;
@property (nonatomic, weak) CALayer *hourL;
@end

@implementation ViewController

- (void)viewDidLoad {
  [super viewDidLoad];

  [self setHour];
  [self setMin];
  [self setSec];

  [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(timeChange) userInfo:nil repeats:YES];
  [self timeChange];
}

- (void)timeChange{

  //获取当前秒
  NSCalendar *cal = [NSCalendar currentCalendar];
  NSDateComponents *cmp = [cal components:NSCalendarUnitSecond | NSCalendarUnitMinute | NSCalendarUnitHour fromDate:[NSDate date]];
  NSInteger curSec = cmp.second + 1;
  NSInteger curMin = cmp.minute;
  NSInteger curHour = cmp.hour;

  //秒针开始旋转
  //计算秒针当前旋转的角度
  // angle = 当前多少秒 * 每一秒旋转多少度
  CGFloat secA = curSec * perSecA;
  //旋转方向是Z轴
  self.secL.transform = CATransform3DMakeRotation(angle2Rad(secA), 0, 0, 1);

  //分针开始旋转
  //计算分针当前旋转的角度
  // angle = 当前多少分 * 每一分旋转多少度
  CGFloat minA = curMin * perMinA;
  self.minL.transform = CATransform3DMakeRotation(angle2Rad(minA), 0, 0, 1);

  //时针开始旋转
  //计算时针当前旋转的角度
  // angle = 当前多少时 * 每一小时旋转多少度
  CGFloat hourA = curHour * perHourA + curMin * perMinHour;

  self.hourL.transform = CATransform3DMakeRotation(angle2Rad(hourA), 0, 0, 1);
}
//添加秒针
- (void)setSec{

  CALayer *secL = [CALayer layer];
  secL.bounds = CGRectMake(0, 0, 1, 80);
  secL.backgroundColor = [UIColor redColor].CGColor;
  //绕着锚点旋转
  secL.anchorPoint = CGPointMake(0.5, 1);
  secL.position = CGPointMake(self.clockView.bounds.size.width * 0.5, self.clockView.bounds.size.height * 0.5);
  [self.clockView.layer addSublayer:secL];
  self.secL = secL;

}

//添加分针
- (void)setMin{

  CALayer *minL = [CALayer layer];
  minL.bounds = CGRectMake(0, 0, 3, 70);
  minL.cornerRadius = 1.5;
  minL.backgroundColor = [UIColor blackColor].CGColor;
  minL.anchorPoint = CGPointMake(0.5, 1);
  minL.position = CGPointMake(self.clockView.bounds.size.width * 0.5, self.clockView.bounds.size.height * 0.5);
  [self.clockView.layer addSublayer:minL];
  self.minL = minL;

}

//添加时针
- (void)setHour{

  CALayer *hourL = [CALayer layer];
  hourL.bounds = CGRectMake(0, 0, 3, 60);
  hourL.backgroundColor = [UIColor blackColor].CGColor;
  hourL.anchorPoint = CGPointMake(0.5, 1);
  hourL.position = CGPointMake(self.clockView.bounds.size.width * 0.5, self.clockView.bounds.size.height * 0.5);
  [self.clockView.layer addSublayer:hourL];
  self.hourL = hourL;

}
- (void)didReceiveMemoryWarning {
  [super didReceiveMemoryWarning];
  // Dispose of any resources that can be recreated.
}

@end

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • iOS实现时间显示几分钟前,几小时前以及刚刚的方法示例

    前言 本文实现的效果类似于QQ空间里的好友发表的动态,会显示好友发表的时间,这里是处理显示几小时前,几分钟前,刚刚,昨天,前天这样的格式,下面来一起看看吧. 一:刚刚,几分钟前,几小时前 //时间 NSString *createdTimeStr = @"2017-01-01 21:05:10"; //把字符串转为NSdate NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; [dateFormatter

  • iOS时钟开发案例分享

    本文实例为大家介绍了iOS时钟开发过程,供大家参考,具体内容如下 思路就是利用CALayer的隐式动画来实现.因为UIView的非根层也就是手动创建的layer在其属性发生变化时会默认会产生动画效果,这些属性也叫作可动画属性.比如bounds.backgroundColor.position. 时钟里面表盘就是一个UIView,而三根针就是三个手动创建的layer. 先在storyboard上弄一个UIImageView,设置表盘图片 然后在viewDidLoad中初始化三根针,并设置定时器,获

  • iOS实现简易钟表

    本文实例为大家分享了iOS实现简易钟表的具体代码,供大家参考,具体内容如下 效果图: 注意:表盘是一个UIImageView控件,设置image为表盘图片 核心代码: // // ViewController.m // 时钟 // // Created by llkj on 2017/8/29. // Copyright © 2017年 LayneCheung. All rights reserved. // #import "ViewController.h" //每一秒旋转多少度

  • 详解JavaScript的Date对象(制作简易钟表)

    JS提供了Date类型来处理时间和日期.Date类型内置一系列获取和设置日期时间信息的方法.下面我们简单的 概述一下这个Date类型.        大概看了一下Date类型的方法,下面给出: 上面的方法自己尝试即可,我只简单的演示一下JS正确输出的格式: var today=new Date();//创建一个时间日期对象 document.write("<h4>下面的是世界标准的时间输出:</h4>"); document.write(today+"

  • IOS实现简易版的QQ下拉列表

    下面我们通过实例代码来一步步看怎么实现, 首先建立了两个模型类, 一个Friend, 一个FriendGroup类. 数据源用的本地的一个plist文件. plist文件中包含了FriendGroup的name,friends数组等属性. Friend.h 示例代码 #import <Foundation/Foundation.h> @interface Friend : NSObject @property (nonatomic, copy) NSString *name; @end Fri

  • iOS实现简易抽屉效果、双边抽屉效果

    本文实例为大家分享了iOS实现抽屉效果的全部代码,供大家参考,具体内容如下 iOS实现简易抽屉效果,代码: @interface ViewController () { UIView* _leftView; } @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from

  • JS+CSS3实现的简易钟表效果示例

    本文实例讲述了JS+CSS3实现的简易钟表效果.分享给大家供大家参考,具体如下: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>www.jb51.net js+css3简易钟表</title> <style type="text/css"> *{ margin: 0; padding: 0; } #wrap{

  • ios实现简易队列

    本文实例为大家分享了ios实现简易队列的具体代码,供大家参考,具体内容如下 满足一些特殊需求 接口部分(队列支持需求) #import <Foundation/Foundation.h> @interface XMQueue : NSObject ///队列追加 - (void)add:(id) obj; ///队列取出 - (id)next; ///返回队列最前端,不删除队列内元素 - (id)first; ///队列内是否还有元素 - (BOOL) isEmpty; ///队列转array

  • iOS实现简易的计算器

    本文实例为大家分享了iOS实现简易的计算器的具体代码,供大家参考,具体内容如下 初步接触视图,制作了一个简易的计算器,基本上简单的计算是没有问题的,不是很完美,可能还有一些bug,再接再厉. // //  ViewController.m //  计算器 // //  Created by ma c on 15/8/25. //  Copyright (c) 2015年 bjsxt. All rights reserved. // #import "ViewController.h"

  • iOS实现简易的抽屉效果

    本文实例为大家分享了iOS实现简易的抽屉效果的具体代码,供大家参考,具体内容如下 1.添加需要实现抽屉效果的三个视图,这里需要注意主视图需要放在最后添加 // 左边视图  ... // 右边视图   ... // 主视图     UIView *mainView=[[UIView alloc]initWithFrame:self.view.bounds];     mainView.backgroundColor=[UIColor greenColor];     _mainView=mainV

  • iOS实现简易的导航栏颜色渐变实例代码

    前言 很多App首页要做成类似天猫和京东的导航栏,实现在页面滑动过程中导航栏渐变的效果.笔者之前在项目里用过一个三方,后来更新版本失效了,于是决定结合自己对导航栏的认识来实现一下这个功能.完成一个简易的iOS导航栏颜色渐变方案. [文末附运行效果及demo],下面话不多说了,来一起看看详细的介绍吧 思考与原理 如何给导航栏设置颜色? //方法一 self.navigationController.navigationBar.backgroundColor = [UIColor redColor]

  • iOS搭建简易购物车页面

    本文实例为大家分享了iOS实现简单购物车页面的搭建,供大家参考,具体内容如下 1.基础页面的搭建 在storyboard的cell中创建控件并进行约束,继承自定义的AZWineCell 将cell中的子控件和自定义的AZWineCell一一进行连线 @property (weak, nonatomic) IBOutlet UIImageView *iconView; @property (weak, nonatomic) IBOutlet UILabel *nameLabel; @propert

随机推荐