美文网首页
iOS-时钟

iOS-时钟

作者: CoderCurtis | 来源:发表于2017-05-25 17:07 被阅读31次
    时钟动画.gif

    需要理解CALayer的anchorPoint属性的意义,可参考CALayer 的 position和anchorPoint属性或其他资料。

    以秒针为例:

    1. 计算每秒的弧度
    2. 获取当前为多少秒,即可得到当前秒针应该为多少弧度
    3. 绘制CGAffineTransformMakeRotation()

    由于显示器刷新频率的问题,有可能感觉秒针走动与系统时钟的秒针走动不一致。因此,当显示器刷新时就刷新一次UI

    //与显示器刷新频率相关联的类 每次显示器刷新都会执行这个方法
        CADisplayLink *link = [CADisplayLink displayLinkWithTarget:self selector:@selector(tick)];
        //加到主消息循环中
        [link addToRunLoop:[NSRunLoop mainRunLoop] forMode:NSDefaultRunLoopMode];
    

    代码:

    //计算每秒的弧度
        CGFloat radian = M_PI * 2 / 60;
        
        //获取当前系统的时分秒
        NSDate *date = [NSDate date];
        
        NSCalendar *calendar = [NSCalendar currentCalendar];
        
    //    //获取秒
    //    NSInteger second = [calendar component:NSCalendarUnitSecond fromDate:date];
    
        NSDateComponents *comp = [calendar components:NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond fromDate:date];
        
        NSInteger hour = comp.hour;
        NSInteger minute = comp.minute;
        NSInteger second = comp.second;
        
        //计算本次秒针应该旋转的弧度
        radian = radian * second;
        
        //让当前秒针与原来的弧度增加一个radian
        self.secondView.transform = CGAffineTransformMakeRotation(radian);
        
        /*******************************************************************/
        
        //计算每小时弧度
        CGFloat hourRadian = (M_PI * 2) / 12.0;
        
        //本次时针应该旋转的弧度
        hourRadian = hourRadian * hour;
        self.hourView.transform = CGAffineTransformMakeRotation(hourRadian);
        
        /*******************************************************************/
        
        //计算每分钟弧度
        CGFloat minuteRadian = M_PI * 2 / 60;
        
        //计算本次分针应该旋转的弧度
        minuteRadian = minuteRadian * minute;
        
        self.minuteView.transform = CGAffineTransformMakeRotation(minuteRadian);
    

    代码

    传智播客iOS教程

    相关文章

      网友评论

          本文标题:iOS-时钟

          本文链接:https://www.haomeiwen.com/subject/nqszxxtx.html