用系统提供的corez2D框架,将我们现实生活中的钟表在xode中画出来,并显示在应用程序上,钟表上包括表盘、时针、分针、秒针,当我们运行程序的时候,程序将根据系统当前时间去设置该钟表的时间,当点击暂停按钮后,时间模拟器将暂停,当点击开始按钮后不会从你停止的那个时间转动,会跳到系统当前时间再转动。当系统时间发生改变的时候,将获取当前系统的时间,计算出指针的旋转角度,并做出相应旋转,从而达到现实生活中指针转动的效果。
实现原理:
1.自定义clock,通过外面将一些属性值传进来,通过这些值设置表盘的颜色,时针、分针、秒针的颜色
@property(nonatomic,strong)UIColor *clockTintColor;
@property(nonatomic,assign)CGFloat clockBorderWidth;
@property(nonatomic,strong)UIColor *clockBorderColor;
@property(nonatomic,strong)UIColor *hourHandColor;
@property(nonatomic,assign)CGFloat hourHandWidth;
@property(nonatomic,strong)UIColor *minuteHandColor;
@property(nonatomic,assign)CGFloat minuteHandWidth;
@property (nonatomic, strong) UIColor *secondHandColor;
@property (nonatomic, assign) CGFloat secondHandWidth;
@property (nonatomic, strong) NSDictionary *momentAttribute;
@property (nonatomic, strong) NSArray *momentList;
@property (nonatomic, strong) UIColor *centerPointColor;
@property (nonatomic, assign) CGFloat centerPointRadius;
2.获取上下文对象,通过外部给表盘设置的大小,计算表盘的半径,并将表盘的边框和背景绘制
CGContextRef context = UIGraphicsGetCurrentContext();
//绘制表盘边框和背景色
CGContextSetStrokeColorWithColor(context, _clockBorderColor.CGColor);
CGContextSetFillColorWithColor(context, _clockTintColor.CGColor);
CGContextSetLineWidth(context, _clockBorderWidth);
_radius = (self.frame.size.width < self.frame.size.height)?self.frame.size.width/2.f : self.frame.size.height/2.f;
_radius = _radius - _clockBorderWidth;
CGContextAddArc(context, CGRectGetWidth(self.frame)/2.f, CGRectGetHeight(self.frame)/2.f, _radius, 0.f, 2*M_PI, 0.f);
CGContextDrawPath(context, kCGPathFillStro