2.1 秒针
-
计算出时钟ImageView的大小(宽度和高度)
-
创建秒针CALayer
-
设置秒针的锚点(anchorPoint),位置(position),尺寸(长度),颜色
2.2 分针
-
计算出时钟ImageView的大小(宽度和高度)
-
创建分针CALayer
-
设置分针的锚点(anchorPoint),位置(position),尺寸(长度),颜色
2.1 时针
-
计算出时钟ImageView的大小(宽度和高度)
-
创建时针CALayer
-
设置时针的锚点(anchorPoint),位置(position),尺寸(长度),颜色
-
获取日历对象,并根据日历对象获取NSDateComponents
-
根据NSDateComponents分别获取秒数/分数/小时数
-
再根据当前的秒数/分数/小时数和每秒/每分/每小时的选择角度,计算出应偏移的度数
-
CATransform3DMakeRotation执行旋转
4.1 代码
#import “ViewController.h”
//每秒秒针转6度
#define perSecendA 6 //360/60
//每分钟分针转6度
#define perMinuteA 6 //360/60
//每小时时针转多少度
#define perHourA 30 //360/12
//每分钟时针转6度
#define perMinuteHourA 0.5 //30/60
#define angle2radian(x) ((x)/180.0 * M_PI)
@interface ViewController ()
{
CALayer *_second;
CALayer *_minute;
CALayer *_hour;
}
@property (weak, nonatomic) IBOutlet UIImageView *clockView;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
//1-添加秒针
[self addSecond];
//2-添加分针
[self addMinute];
//3-添加时针
[self addHour];
//创建定时器
[NSTimer scheduledTimerWithTimeInterval:1 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, 1);
//3.设置位置
hour.position=CGPointMake(imageW0.5, imageH0.5);
//4.设置尺寸
hour.bounds=CGRectMake(0, 0, 4, imageH*0.5-50);
//5.设置背景色
hour.backgroundColor=[UIColor blackColor].CGColor;
hour.cornerRadius=5;
//6.添加到图层上
最后
跳槽季整理面试题已经成了我多年的习惯!在这里我和身边一些朋友特意整理了一份快速进阶为Android高级工程师的系统且全面的学习资料。涵盖了Android初级——Android高级架构师进阶必备的一些学习技能。
附上:我们之前因为秋招收集的二十套一二线互联网公司Android面试真题(含BAT、小米、华为、美团、滴滴)和我自己整理Android复习笔记(包含Android基础知识点、Android扩展知识点、Android源码解析、设计模式汇总、Gradle知识点、常见算法题汇总。)
本文在开源项目:【GitHub 】中已收录,里面包含不同方向的自学编程路线、面试题集合/面经、及系列技术文章等,资源持续更新中…
BC%80%E5%8F%91%E4%B8%8D%E4%BC%9A%E8%BF%99%E4%BA%9B%EF%BC%9F%E5%A6%82%E4%BD%95%E9%9D%A2%E8%AF%95%E6%8B%BF%E9%AB%98%E8%96%AA%EF%BC%81.md) 】中已收录,里面包含不同方向的自学编程路线、面试题集合/面经、及系列技术文章等,资源持续更新中…**