#define perSecendA 6 //360/60
//每分钟分针转6度
#define perMinuteA 6 //360/60
//每小时时针转多少度
#define perHourA 30 //360/12
//每分钟时针转6度
#define perMinuteHourA 0.5 //30/60
#define angle2radian(x) ((x)/180.0 * M_PI)
@interface ViewController ()
{
CALayer *_second;
CALayer *_minute;
CALayer *_hour;
}
@property (weak, nonatomic) IBOutlet UIImageView *clockView;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
//1-添加秒针
[self addSecond];
//2-添加分针
[self addMinute];
//3-添加时针
[self addHour];
//创建定时器
[NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(update) userInfo:nil repeats:YES];
[self update];
}
//添加时针
-(void)addHour
{
CGFloat imageW=_clockView.bounds.size.width;
CGFloat imageH=_clockView.bounds.size.height;
//1.添加分针
CALayer *hour=[CALayer layer];
//2.添加锚点
hour.anchorPoint=CGPointMake(0.5, 1);
//3.设置位置
hour.position=CGPointMake(imageW0.5, imageH0.5);
//4.设置尺寸
hour.bounds=CGRectMake(0, 0, 4, imageH*0.5-50);
//5.设置背景色
hour.backgroundColor=[UIColor blackColor].CGColor;
hour.cornerRadius=5;
//6.添加到图层上
[_clockView.layer addSublayer:hour];
_hour=hour;
}
//添加分针
-(void)addMinute
{
CGFloat imageW=_clockView.bounds.size.width;
CGFloat imageH=_clockView.bounds.size.height;
//1.添加分针
CALayer *minute=[CALayer layer];
//2.添加锚点
minute.anchorPoint=CGPointMake(0.5, 1);
//3.设置位置
minute.position=CGPointMake(imageW0.5, imageH0.5);
//4.设置尺寸
minute.bounds=CGRectMake(0, 0, 2, imageH*0.5-30);
//5.设置背景色
minute.backgroundColor=[UIColor blackColor].CGColor;
//6.添加到图层上
[_clockView.layer addSublayer:minute];
_minute=minute;
}
//添加秒针
-(void)addSecond
{
CGFloat imageW=_clockView.bounds.size.width;
CGFloat imageH=_clockView.bounds.size.height;
//1.添加秒针
CALayer *second=[CALayer layer];
//2.添加锚点
second.anchorPoint=CGPointMake(0.5, 1);
//3.设置位置
second.position=CGPointMake(imageW0.5, imageH0.5);
//4.设置尺寸
second.bounds=CGRectMake(0, 0, 1, imageH*0.5-20);
//5.设置背景色
second.backgroundColor=[UIColor redColor].CGColor;
//6.添加到图层上
[_clockView.layer addSublayer:second];
_second=second;
}
-(void)update
{
//获取秒数
//获取日历对象
NSCalendar *calendar=[NSCalendar currentCalendar];
NSDateComponents *compoents=[calendar components:NSCalendarUnitSecond|NSCalendarUnitMinute|NSCalendarUnitHour fromDate:[NSDate date]];
//获取秒数
CGFloat sec=compoents.second;
//获取分钟
CGFloat minute=compoents.minute;
//获取小时
CGFloat hour=compoents.hour;
//算出秒针旋转多少
CGFloat secondA=sec*perSecendA;
//算出分针旋转多少
CGFloat minuteA=minute*perMinuteA;
//算出时针旋转多少
最后
希望本文对你有所启发,有任何面试上的建议也欢迎留言分享给大家。
好了,今天的分享就到这里,如果你对在面试中遇到的问题,或者刚毕业及工作几年迷茫不知道该如何准备面试并突破现状提升自己,对于自己的未来还不够了解不知道给如何规划,来看看同行们都是如何突破现状,怎么学习的,来吸收他们的面试以及工作经验完善自己的之后的面试计划及职业规划。
好了~如果你看到了这里,觉得文章写得不错就给个赞呗?如果你觉得那里值得改进的,请给我留言。一定会认真查询,修正不足。谢谢。
为什么某些人会一直比你优秀,是因为他本身就很优秀还一直在持续努力变得更优秀,而你是不是还在满足于现状内心在窃喜!希望读到这的您能点个小赞和关注下我,以后还会更新技术干货,谢谢您的支持!
《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》,点击传送门,即可获取!
,请给我留言。一定会认真查询,修正不足。谢谢。
[外链图片转存中…(img-1i0Djayp-1715838804616)]
为什么某些人会一直比你优秀,是因为他本身就很优秀还一直在持续努力变得更优秀,而你是不是还在满足于现状内心在窃喜!希望读到这的您能点个小赞和关注下我,以后还会更新技术干货,谢谢您的支持!
《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》,点击传送门,即可获取!