iOS控件动画分享

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];   
   }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,090评论 25 708
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,200评论 4 61
  • 原文链接:https://github.com/opendigg/awesome-github-android-u...
    IM魂影阅读 32,954评论 6 472
  • https的出现最主要是防止数据被篡改。 下面分析下: 我们正常情况下访问网站的路径是这样的: 客户端(浏览器,A...
    IT锟阅读 1,178评论 0 1
  • 一切不眠都是属于你的 就如一切蚊虫 扭曲双翼和触角 全力聚集向灯盏处 壮烈地投奔 闭合的门瑟瑟着发声 好像受惊的人...
    梵范_阅读 627评论 0 2