CABasicAnimation动画--lable字体大小改变

原创 2016年05月30日 20:20:30

CABasicAnimation动画--lable字体大小改变

开发过程中遇到一个改变字体大小的动画需求

研究良久  发现可以通过CABasicAnimation 和 CAAnimationGroup简单实现

CABasicAnimation有三个property   fromValue  toValue  ByValue

创建CABasicAnimation 时,你需要通过-setFromValue 和-setToValue 来指定一个开始值和结束值。 当你增加基础动画到层中的时候,它开始运行。当用属性做动画完成时,例如用位置属性做动画,层就会立刻 返回到它的初始位置

在做动画时,我们希望将几种动画叠加起来同时播放,或者依次连续播放。

这时候使用 组合CAAnimationGroup

以下是实现代码,

#import "ViewController.h"

@interface ViewController ()
{
    UILabel *lable;
    UIButton *button;
    UIView *vview;
}

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    
    self.view.backgroundColor = [UIColor yellowColor];
    
    button = [UIButton buttonWithType:UIButtonTypeCustom];
    button.frame = CGRectMake(0, 0, 100, 40);
    button.backgroundColor = [UIColor redColor];
    [button addTarget:self action:@selector(buttonClick) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:button];
    
    vview = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 300, 80)];
    vview.backgroundColor = [UIColor greenColor];
    vview.center = self.view.center;
    vview.layer.cornerRadius = vview.frame.size.height/2;
    [self.view addSubview:vview];
    
    lable = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 300, 80)];
    lable.text = @"动画已经准备好";
    lable.font = [UIFont systemFontOfSize:30];
    lable.layer.borderWidth = 3;
    lable.layer.borderColor = [UIColor whiteColor].CGColor;
    lable.textAlignment = NSTextAlignmentCenter;
    lable.layer.cornerRadius = lable.frame.size.height/2;
    [vview addSubview:lable];
    
    
//    lable.hidden = YES;
}

- (void)buttonClick
{
    [UIView animateWithDuration:3 animations:^{
        
        CABasicAnimation * aniScale = [CABasicAnimation animationWithKeyPath:@"transform.scale"];
        aniScale.fromValue = [NSNumber numberWithFloat:0.5];
        aniScale.toValue = [NSNumber numberWithFloat:4.0];
        aniScale.duration = 3;
        aniScale.delegate = self;
        aniScale.removedOnCompletion = NO;
        aniScale.repeatCount = 1;
        [vview.layer addAnimation:aniScale forKey:@"babyCoin_scale"];
        
    } completion:^(BOOL finished) {
        [self babyCoinFadeAway];
    }];
}

-(void)babyCoinFadeAway
{

    //相当与两个动画  合成
    //位置改变
    CABasicAnimation * aniMove = [CABasicAnimation animationWithKeyPath:@"position"];
    aniMove.fromValue = [NSValue valueWithCGPoint:vview.layer.position];
    aniMove.toValue = [NSValue valueWithCGPoint:CGPointMake(500, 300)];
    //大小改变
    CABasicAnimation * aniScale = [CABasicAnimation animationWithKeyPath:@"transform.scale"];
    aniScale.fromValue = [NSNumber numberWithFloat:3.0];
    aniScale.toValue = [NSNumber numberWithFloat:0.5];
    
    CAAnimationGroup * aniGroup = [CAAnimationGroup animation];
    aniGroup.duration = 3.0;//设置动画持续时间
    aniGroup.repeatCount = 1;//设置动画执行次数
    aniGroup.delegate = self;
    aniGroup.animations = @[aniMove,aniScale];
    aniGroup.removedOnCompletion = NO;
    aniGroup.fillMode = kCAFillModeForwards;  //防止动画结束后回到原位
//    [lable.layer removeAllAnimations];
    [vview.layer addAnimation:aniGroup forKey:@"aniMove_aniScale_groupAnimation"];
    
}

@end


iOS 文字动画,文字逐个显示

随手记:     对于iOS文字动画,首先想到的应该是基于CoreText框架将文字每个都写出来,加上定时器给定每个字显示的时间,这是一种思维方式: #import "ViewController...
  • et295394330
  • et295394330
  • 2016年01月16日 21:51
  • 3548

UILabel的缩放效果

UILabel的缩放效果   效果图   源码 https://github.com/YouXianMing/Animations // // ScaleLabe...
  • iOSbird
  • iOSbird
  • 2016年02月04日 11:04
  • 583

UILabel数字变化增加动画

@interface LableNumberChange : UILabel - (void)jumpNumberWithDuration:(int)duration        ...
  • jq2530469200
  • jq2530469200
  • 2016年05月12日 16:42
  • 509

iOS 文字动画,文字逐个显示

随手记:     对于iOS文字动画,首先想到的应该是基于CoreText框架将文字每个都写出来,加上定时器给定每个字显示的时间,这是一种思维方式: #import "ViewController...
  • et295394330
  • et295394330
  • 2016年01月16日 21:51
  • 3548

iOS中字迹动画效果

最近自己着手一款关于中国风的app,其中需要的一个想法就是诗词可以像ppt中的一种模式:字可以一个个的显示出来。最先的想法是将诗词分成一个个字放在一个个label上面,然后添加动画将其显示出来!然后这...
  • qq_30513483
  • qq_30513483
  • 2016年05月23日 09:26
  • 1786

UILabel的缩放效果

UILabel的缩放效果   效果图   源码 https://github.com/YouXianMing/Animations // // ScaleLabe...
  • iOSbird
  • iOSbird
  • 2016年02月04日 11:04
  • 583

iOS动画——辉光效果(Label)

一,  效果图如下:      二, 代码如下      三,使用方式
  • IT_liuchengli
  • IT_liuchengli
  • 2017年01月09日 10:41
  • 790

ios(CoreAnimation核心动画 一) CABasicAnimation动画与锚点

一、position和anchorPoint position:用来设置CALayer在父层中的位置,以父层的左上角为原点(0, 0) anchorPoint(锚点): 称为“定位点”、“锚点” ...
  • u012490014
  • u012490014
  • 2015年01月06日 19:45
  • 2569

CABasicAnimation的基本使用方法(移动·旋转·放大·缩小)

博主:最近iOS开发中用到CoreAnimation的framework来做动画效果,虽然以前也用过,但一直没有系统学习过,今天看到一篇非常详细的博文(虽然是日语,但真的写的很好),在此翻译出来供大家...
  • wildfireli
  • wildfireli
  • 2014年04月07日 09:52
  • 31579

iOS实现绘画文字动画

通过Core Text 结合 Bezier 曲线和 CAShapeLayer 可以做出绘画文字的动画。如下代码: CGMutablePathRef letters = CGPathCreateMuta...
  • linshaolie
  • linshaolie
  • 2015年03月24日 17:43
  • 3064
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:CABasicAnimation动画--lable字体大小改变
举报原因:
原因补充:

(最多只允许输入30个字)