zoukankan      html  css  js  c++  java
  • 手表(锚点)

    //

    //  ViewController.m

    //  UI-NO-37-1 模拟手表

    //

    //  Created by 容伟 on 15/9/16.

    //  Copyright (c) 2015年 容伟. All rights reserved.

    //

     

    #import "ViewController.h"

     

    @interface ViewController ()

    {

        CALayer *sLayer; // 秒针

        CALayer *mLayer; // 分针

        CALayer *hLayer; // 时针

        

        

     

    }

    @end

     

    @implementation ViewController

     

    - (void)viewDidLoad {

        [super viewDidLoad];

     

    //  表盘

        [self addWatchFace];

    //  秒针

        [self pointLayer];

     

        CADisplayLink *link = [CADisplayLink displayLinkWithTarget:self selector:@selector(fireTime)];

        [link addToRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];

        

    //    定时器 调用指针旋转

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

     

    }

     

     

    //   添加表盘

    - (void)addWatchFace {

        UIImage *image = [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"表盘" ofType:@"png"]];

        

        UIImageView *imageView = [[UIImageView alloc] initWithImage:image];

        imageView.frame = CGRectMake(0, 0, image.size.width/3, image.size.height/3);

        imageView.center = self.view.center;

        [self.view addSubview:imageView];

    }

     

    - (void)pointLayer {

    //  秒针  分针  时针

        UIImage *image = [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"指针" ofType:@"png"]];

        sLayer = [[CALayer alloc] init];

        sLayer.bounds = CGRectMake(0, 0, image.size.width/8, image.size.height/4);

        sLayer.position = self.view.center;

        sLayer.anchorPoint = CGPointMake(0.5, 0.65);

        sLayer.contents = (__bridge id)(image.CGImage);

        [self.view.layer addSublayer:sLayer];

        

    //  分针

        mLayer = [[CALayer alloc] init];

        mLayer.bounds = CGRectMake(0, 0, image.size.width/7, image.size.height/5);

        mLayer.position = self.view.center;

        mLayer.anchorPoint = CGPointMake(0.5, 0.65);

        mLayer.contents = (id)image.CGImage;

        [self.view.layer addSublayer:mLayer];

     

    //  时针

        hLayer = [[CALayer alloc] init];

        hLayer.bounds = CGRectMake(0, 0, image.size.width/6, image.size.height/7);

        hLayer.position = self.view.center;

        hLayer.anchorPoint = CGPointMake(0.5, 0.65);

        hLayer.contents = (id)image.CGImage;

        [self.view.layer addSublayer:hLayer];

     

     

    }

     

    // 定时器 调用方法

    - (void)fireTime {

        NSCalendar *calendar = [NSCalendar currentCalendar];

        

        //    获得当前的时间 小时

        //    component:fromDate: 从日历里面的某个日期 获得某个组件

        NSInteger h =[calendar component:NSCalendarUnitHour fromDate:[NSDate date]];

    //    NSLog(@"%ld", (long)h);

        

        //    获得当前时间 分

        NSInteger m =[calendar component:NSCalendarUnitMinute fromDate:[NSDate date]];

        

        //    获得当前时间 秒

        NSInteger s =[calendar component:NSCalendarUnitSecond fromDate:[NSDate date]];

        sLayer.transform = CATransform3DMakeRotation(M_PI/30*s, 0, 0, 1);

        

    #warning 有错

        mLayer.transform = CATransform3DMakeRotation(M_PI/30*m + (M_PI/(30*60))*s, 0, 0, 1);

        hLayer.transform = CATransform3DMakeRotation(M_PI/6*h + (M_PI/(6*60))*m, 0, 0, 1);

    }

     

     

     

    - (void)didReceiveMemoryWarning {

        [super didReceiveMemoryWarning];

        // Dispose of any resources that can be recreated.

    }

     

    @end

     

  • 相关阅读:
    Java多线程:sleep()、yield()和join()方法浅析
    Java多线程:InterruptedException出现时的处理方法
    Java多线程:中断机制interrupt以及InterruptedException出现的原因
    Java多线程:哲学家就餐问题和生产者消费者问题
    Java多线程:wait()和notify()方法详解
    Java多线程:多线程的Synchronized详解
    Java多线程:线程的实现、生命周期和优先级以及与进程之间的区别
    ie6下:png图片不透明 和 背景图片为png的节点的内部标签单击事件不响应
    实现每次触发事件后隔一段时间后才能再次触发事件
    window.open窗口居中和窗口最大化
  • 原文地址:https://www.cnblogs.com/wukun16/p/4884165.html
Copyright © 2011-2022 走看看