美文网首页ios开发那些事
iOS倒计时数字放大效果实现

iOS倒计时数字放大效果实现

作者: 近听雨落声丶 | 来源:发表于2019-03-04 16:14 被阅读97次

em....

第一次写技术文章,有点激动。做了很久的IOS开发,都没记录下相关的学习知识。于是决定接下来陆陆续续写点文章。

回到正题,本次实现的是倒计时放大效果。用到的知识有 GCD、UIView动画。相对来说还是比较简单易懂的类型。

先上效果图:


4081F5DC-3E48-4228-BC58-D0CB8DD6B39B.png 4730E8FB-7E9F-4C9F-9072-2CCCE2D40580.png

首先,在新建方法里面实现一个UILabel,并设置字体颜色和文字大小

-(void)secountDown{
    countDown =[[UILabel alloc]init];
    countDown.text=@"10";
    countDown.textColor =FONTCOLOR33;
    countDown.font =[UIFont systemFontOfSize:100];
    [self.view addSubview:countDown];
    [countDown mas_makeConstraints:^(MASConstraintMaker *make) {
        make.center.equalTo(self.view);
     }];
}

其次新建一个GCD倒计时的方法。 这里关于GCD的知识就不解释了,想学习更多的知识,可以网上搜的。

#pragma mark GCD实现倒计时
-(void)thirdBtnAction{
    __block NSInteger second = 10;
    dispatch_queue_t quene = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
    dispatch_source_t timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, quene);
    dispatch_source_set_timer(timer, DISPATCH_TIME_NOW, 1 * NSEC_PER_SEC, 0 * NSEC_PER_SEC);

    dispatch_source_set_event_handler(timer, ^{
        dispatch_async(dispatch_get_main_queue(), ^{
            if (second == 0) {
                dispatch_cancel(timer);
            } else {
                second--;
            }
        });
    });

    dispatch_resume(timer);
}

创建完了CGD倒计时方法后,就需要去实现每秒该实现的事情。
在动画开始前,我们都需要去初始化UILabel,然后在调用UIView动画去改变UILabel的形态

 countDown.text=[NSString stringWithFormat:@"%d",second];
 countDown.alpha = 1;
 countDown.textColor = FONTCOLOR33;
[UIView animateWithDuration:0.5 animations:^{
        countDown.alpha = 0;//透明度
        countDown.transform = CGAffineTransformMakeScale(5.0, 5.0);//放大值
 } completion:^(BOOL finished) {
       countDown.transform = CGAffineTransformIdentity;//回复原大小
 }];

至此,倒计时数字放大效果已实现完成。各位同行的大佬,有更好的方法,欢迎指点。

相关文章

网友评论

    本文标题:iOS倒计时数字放大效果实现

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