用代码实现时钟功能

来源:互联网 发布:视频同步软件 编辑:程序博客网 时间:2024/05/20 16:42


// 每一秒旋转的角度

#define perSec  6


// 每一分钟旋转的角度

#define perMin 6


// 每一个小时旋转的角度

#define perHour 30

// 每一分钟所对应时针旋转的角度

#define perMin2hourAngle 0.5


#import "ViewController.h"


@interface ViewController ()


@property (weak, nonatomic) IBOutletUIImageView *myView;

@property(nonatomic,strong)CALayer *secLayer;

@property(nonatomic,strong)CALayer *hourLayer;

@property(nonatomic,strong)CALayer *minLayer;


@end


@implementation ViewController


- (void)viewDidLoad {

    [superviewDidLoad];

    [self setUpSec];

    [self setUpMin];

    [selfsetUpHour];

    

// 创建一个定时器

    [NSTimerscheduledTimerWithTimeInterval:1target:selfselector:@selector(timeChange)userInfo:nilrepeats:YES];

    

    [selftimeChange];

}


- (void)timeChange

{

//    获取当前日历

    NSCalendar *calendar = [NSCalendarcurrentCalendar];

//    获取当前日期单元

    NSDateComponents *cmp = [calendarcomponents:NSCalendarUnitHour|NSCalendarUnitSecond|NSCalendarUnitMinutefromDate:[NSDatedate]];

//    获取当前日期中的当前秒数

    NSInteger sec = cmp.second;

//    获取当前日期中的分钟数

    NSInteger min = cmp.minute;

//    获取当前日期中的小时数

    NSInteger hour = cmp.hour;

//    计算秒针走过的弧度

CGFloat secAngle = perSec * sec /180.0 *M_PI;

//    计算分针走过的弧度

CGFloat minAngle = perMin * min /180.0 *M_PI;

//    计算时针走过的弧度

CGFloat hourAngle = (perHour * hour+perMin2hourAngle * min) /180.0 *M_PI ;

    

    self.secLayer.transform =CATransform3DMakeRotation(secAngle, 0, 0, 1);

    self.minLayer.transform =CATransform3DMakeRotation(minAngle, 0, 0, 1);

    self.hourLayer.transform =CATransform3DMakeRotation(hourAngle, 0, 0, 1);


    

}


- (void)setUpSec

{

    //    创建一个非根图层(秒针)

    CALayer *seclayer = [CALayerlayer];

    self.secLayer = seclayer;

    

    seclayer.backgroundColor = [UIColorredColor].CGColor;

    seclayer.bounds = CGRectMake(0, 0, 2, 80);

    seclayer.anchorPoint = CGPointMake(0.5, 1);

    seclayer.position =CGPointMake(self.myView.bounds.size.width *0.5, self.myView.bounds.size.height *0.5);

    //    把图层添加到根图层中

    [self.myView.layeraddSublayer:seclayer];

 

}


- (void)setUpMin

{

    //    创建一个非根图层(秒针)

    CALayer *minlayer = [CALayerlayer];

    self.minLayer = minlayer;

    

    minlayer.backgroundColor = [UIColorblackColor].CGColor;

    minlayer.bounds = CGRectMake(0, 0, 3, 70);

    minlayer.anchorPoint = CGPointMake(0.5, 1);

    minlayer.position =CGPointMake(self.myView.bounds.size.width *0.5, self.myView.bounds.size.height *0.5);

    //    设置时针的圆角半径

    minlayer.cornerRadius = 1;

    //    把图层添加到根图层中

    [self.myView.layeraddSublayer:minlayer];


}

- (void)setUpHour

{

    //    创建一个非根图层(秒针)

    CALayer *hourlayer = [CALayerlayer];

    self.hourLayer = hourlayer;

    

    hourlayer.backgroundColor = [UIColorblackColor].CGColor;

    hourlayer.bounds = CGRectMake(0, 0, 4, 60);

    hourlayer.anchorPoint = CGPointMake(0.5, 1);

    hourlayer.position =CGPointMake(self.myView.bounds.size.width *0.5, self.myView.bounds.size.height *0.5);

    //    设置时针的圆角半径

    hourlayer.cornerRadius = 2;

    

    //    把图层添加到根图层中

    [self.myView.layeraddSublayer:hourlayer];


}

@end


0 0
原创粉丝点击