iOS 动画-时钟
2016-04-23 19:44
591 查看
前些天驾照考试 ,在等待的时候我发现电子显示屏上的钟表。我就想他们是怎么做的。回来就写了一个倒是挺简单。
//表盘图层 CALayer *layout = [CALayer layer]; layout.frame = CGRectMake((width-blockWidth)/2, (height-blockHeight)/2, blockWidth, blockHeight); layout.backgroundColor = [UIColor brownColor].CGColor; layout.cornerRadius = 50; layout.borderColor = [UIColor blackColor].CGColor; layout.borderWidth = 4.0; [self.view.layer addSublayer:layout];
上面的代码就是表盘了。
//时针图层 _hourLayout = [CALayer layer]; _hourLayout.frame = CGRectMake((blockWidth-3)/2, 10, 3, 45); _hourLayout.position = CGPointMake(blockWidth/2, blockHeight/2);//锚点的位置 _hourLayout.anchorPoint = CGPointMake(0.5, 8/9.0);//设置锚点 _hourLayout.backgroundColor = [UIColor redColor].CGColor;//颜色 _hourLayout.cornerRadius = 1.5;//圆角 [layout addSublayer:_hourLayout];
position 和 anchorPoint 是两个重要的属性。
anchorPoint 是一个 CGPoint 结构体,取值范围是(0-1)。
position 也是一个CGPoint结构体,表示anchorPoint点的位置。
详情可以看一下:/article/4670874.html
//定时器 NSTimer *timer = [NSTimer timerWithTimeInterval:1 target:self selector:@selector(secondRun) userInfo:nil repeats:YES]; //添加到运行池 [[NSRunLoop currentRunLoop] addTimer:timer forMode:NSDefaultRunLoopMode];
-(void)secondRun { dispatch_async(dispatch_get_main_queue(), ^{ _secondLayout.transform = CATransform3DRotate(_secondLayout.transform, 6*M_PI/180.0, 0, 0, 1);//旋转 第一个参数表示弧度 ,z = 1表示绕z轴旋转 _minuteLayout.transform = CATransform3DRotate(_minuteLayout.transform, 0.1*M_PI/180.0, 0, 0, 1); _hourLayout.transform = CATransform3DRotate(_hourLayout.transform, 1/120*M_PI/180, 0, 0, 1); }); }
这样就能实现。
Demo:http://download.csdn.net/detail/u010123208/9500406
相关文章推荐
- iOS 动画-波浪
- iOS 开发流程笔记
- IOS 设计模式 生成器模式
- 修改设备密码及灌溉IOS
- 《iOS开发之美》学习笔记
- iOS开发动画(Animation)图片360度不停旋转
- ios struct property
- 全局侧滑
- ios计算内容的高度 (含7.0前及以后的版本的用法)
- ijkplayer --B站开源播放框架使用教程(iOS版)
- 使用免费公开的api接口示例(iOS)
- iOS常用的高效开发宏
- iOS 压力测试
- iOS-获取视频长度和当前播放时间
- Xcode无法启动ios模拟器的问题
- 获取IOS应用异常崩溃日志信息
- iOS客户端ssl签名认证加密双向加密建议使用双向加密更好维护--修改
- IOS-界面传值
- iOS-点击按钮,改变图片
- Block实现iOS回调