iOS控件动画分享

2016-08-09  本文已影响103人  HelloRyan

1.水平晃动(登录失败,请求错误)

CAKeyframeAnimation *keyframeAnimation = [CAKeyframeAnimation animationWithKeyPath:@"transform.translation.x"];
keyframeAnimation.values = @[@-5, @0, @5, @0];
keyframeAnimation.repeatCount = 3;
keyframeAnimation.duration = 0.1;
[SomeView.layer addAnimation:keyframeAnimation forKey:nil];

2.抖动效果(删除控件)

#define angelToRandian(x)  ((x)/180.0 * M_PI)

CAKeyframeAnimation *keyframeAnimation = [CAKeyframeAnimation animation];
keyframeAnimation.keyPath = @"transform.rotation";
keyframeAnimation.values = @[@(angelToRandian(-1.5)),@(angelToRandian(1.5)),@(angelToRandian(-1.5))]; 
keyframeAnimation.repeatCount = MAXFLOAT;
keyframeAnimation.duration = 0.2;
[SomeView.layer addAnimation:keyframeAnimation forKey:nil];`

3.弹出、缩小隐藏效果(自定义一个视图,在设置其隐藏属时触发动画)

// 自定义初始化方法
- (instancetype)init {   
   if (self = [super init]) {              
      // 初始化视图       
      [self initViews];    
   }              
      return self;
}
// 初始化视图
- (void)initViews {   
    // 这里创建了三个button
    _qqLoginBtn = [[UIButton alloc] initWithFrame:CGRectMake(15, 10, 80, 80)];   
    [_qqLoginBtn setImage:[UIImage imageNamed:@"Icon_qq.png"] forState:UIControlStateNormal];    
    [self addSubview:_qqLoginBtn]; 
    _weChatLoginBtn = [[UIButton alloc] initWithFrame:CGRectMake(110, 10, 80, 80)];   
    [_weChatLoginBtn setImage:[UIImage imageNamed:@"Icon_weChat.png"] forState:UIControlStateNormal];    
    [self addSubview:_weChatLoginBtn];
    _sinaLoginBtn = [[UIButton alloc] initWithFrame:CGRectMake(205, 10, 80, 80)];    
    [_sinaLoginBtn setImage:[UIImage imageNamed:@"Icon_sina.png"] forState:UIControlStateNormal];    
    [self addSubview:_sinaLoginBtn];   
}
// 设置出现、隐藏动画
- (void)setHidden:(BOOL)hidden {       
  if (hidden) {        
     // 隐藏动画       
     [UIView animateWithDuration:.35 delay:0 usingSpringWithDamping:1 initialSpringVelocity:30   options:UIViewAnimationOptionCurveEaseInOut   animations:^{                       
        _qqLoginBtn.transform = CGAffineTransformMakeScale(0.01, 0.01);            
        _weChatLoginBtn.transform = CGAffineTransformMakeScale(0.01, 0.01);                                    
        _sinaLoginBtn.transform = CGAffineTransformMakeScale(0.01, 0.01);      
     } completion:^(BOOL finished) {         
        [super setHidden:hidden];      
     }];  
  }else {        
      // 显示动画      
      [super setHidden:hidden];             
      [UIView animateWithDuration:.35 delay:0 usingSpringWithDamping:0.5      initialSpringVelocity:10 options:UIViewAnimationOptionCurveEaseInOut animations:^{                     
         _qqLoginBtn.transform = CGAffineTransformMakeScale(1, 1);           
         _weChatLoginBtn.transform = CGAffineTransformMakeScale(1, 1);          
         _sinaLoginBtn.transform = CGAffineTransformMakeScale(1, 1);     
      } completion:nil];   
   }
}
上一篇下一篇

猜你喜欢

热点阅读