iOS开发中仿Tumblr点赞心破碎动画效果

最近Tumblr轻博客无论是web端还是移动端,都非常受欢迎,简单调研了一下,其中动画是我感兴趣的,特此写了个仿Tumblr点赞心破碎动画;

1.首先看下效果:

2.模仿Tumblr中的效果应用如下:

原理:使用按钮点击Action增加两个事件,通过改变背景hidden和frame,切换图片,增加动画效果等;

setupUI及touch Action:

<span style="font-size:14px;">- (void)setupUI
{
  // 点击的btn
  UIButton *praiseBtn = [UIButton buttonWithType:UIButtonTypeCustom];
  praiseBtn.frame = CGRectMake(100, 200, KKPraiseBtnWH, KKPraiseBtnWH);
  [praiseBtn setImage:[UIImage imageNamed:@"icon_like"] forState:UIControlStateNormal];
  [praiseBtn setImage:[UIImage imageNamed:@"icon_likeon"] forState:UIControlStateSelected];
  [self.view addSubview:praiseBtn];
  [praiseBtn addTarget:self action:@selector(clickTheBtn:) forControlEvents:UIControlEventTouchUpInside];
  _praiseBtn = praiseBtn;
  // 放大后的btn
  _coverBtn = [UIButton buttonWithType:UIButtonTypeCustom];
  _coverBtn.frame = praiseBtn.frame;
  _coverBtn.alpha = 0;
  [_coverBtn setImage:[UIImage imageNamed:@"big"] forState:UIControlStateSelected];
  [_coverBtn setImage:[UIImage imageNamed:@"big"] forState:UIControlStateNormal];
  [self.view insertSubview:_coverBtn belowSubview:praiseBtn];
  _cancelPraiseImg = [[UIImageView alloc]initWithFrame:CGRectMake(80, 150, KKPraiseBtnWH*2, KKPraiseBtnWH*2*KKToBrokenHeartWH)];
  _cancelPraiseImg.hidden = YES;
  _cancelPraiseImg.centerX = _praiseBtn.centerX;
  [self.view addSubview:_cancelPraiseImg];
}
-(void)clickTheBtn:(UIButton *)btn
{
  [self playAnimation];
  btn.userInteractionEnabled = NO;
  btn.selected = !btn.selected;
}
-(void)playAnimation{
  if (!_praiseBtn.selected) {
    _coverBtn.alpha = 1;
    [UIView animateWithDuration:1.0f animations:^{
      _coverBtn.frame = CGRectMake(80, 100, KKPraiseBtnWH*2, KKPraiseBtnWH*2);
      CAKeyframeAnimation *anima = [CAKeyframeAnimation animationWithKeyPath:@"transform.rotation"];
      NSValue *value1 = [NSNumber numberWithFloat:-M_PI/180*5];
      NSValue *value2 = [NSNumber numberWithFloat:M_PI/180*5];
      NSValue *value3 = [NSNumber numberWithFloat:-M_PI/180*5];
      anima.values = @[value1,value2,value3];
      anima.repeatCount = MAXFLOAT;
      [_coverBtn.layer addAnimation:anima forKey:nil];
      _coverBtn.alpha = 0;
      _coverBtn.centerX = _praiseBtn.centerX;
    } completion:^(BOOL finished) {
      _coverBtn.frame = _praiseBtn.frame;
      _praiseBtn.userInteractionEnabled = YES;
    }];
  } else {
    _cancelPraiseImg.hidden = NO;
    NSArray *imgArr = [NSArray arrayWithObjects:[UIImage imageNamed:@"icon_like_broken1"],[UIImage imageNamed:@"icon_like_broken2"],[UIImage imageNamed:@"icon_like_broken3"],[UIImage imageNamed:@"icon_like_broken4"], nil nil];
    _cancelPraiseImg.animationImages = imgArr;
    _cancelPraiseImg.animationDuration = KKBorkenTime;
    _cancelPraiseImg.animationRepeatCount = 1;
    [_cancelPraiseImg startAnimating];
    [UIView animateWithDuration:KKBorkenTime animations:^{
      _cancelPraiseImg.frame = CGRectMake(80, 200, KKPraiseBtnWH*2, KKPraiseBtnWH*2*KKToBrokenHeartWH);
      _cancelPraiseImg.alpha = 0;
    }completion:^(BOOL finished) {
      _cancelPraiseImg.frame = CGRectMake(80, 150, KKPraiseBtnWH*2, KKPraiseBtnWH*2*KKToBrokenHeartWH);
      _cancelPraiseImg.alpha = 1;
      _praiseBtn.userInteractionEnabled = YES;
    }];
  }
}</span> 

以上所述是小编给大家介绍的iOS开发中仿Tumblr点赞心破碎动画效果,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!

(0)

相关推荐

  • 基于UIControl控件实现ios点赞功能

    在开发当中,可能很多时候都需要做个点赞的需求,如果用按钮实现,按钮作为一个系统复合控件,外部是一个 View-->UIControl的容器,内部包含了UILabel和UIImage,以及一些排版规则.用UIButton就很难去做一些在"赞"和"取消赞"切换时的效果. 可是我们又很需要UIButton似的事件响应机制. 怎么办? 对! 就是使用UIControl. UIControl在这里有两个突出的优势: 1.作为UIButton的父控件,具有UIButton

  • iOS使用核心动画和粒子发射器实现点赞按钮的方法

    首先放上效果图,大家可以看一下 实现的方法如下 一.使用到的类 CAKeyframeAnimation       // 核心动画-关键帧动画 CAEmitterLayer            // 粒子发射器(其实就是一个Layer,其父类是CALayer) CAEmitterCell             // 粒子 PS:核心动画应该不用多说了; CAEmitterLayer和CAEmitterCell,其实可以比喻成"炮"和"炮弹",应该不难理解; 二.

  • iOS开发中仿Tumblr点赞心破碎动画效果

    最近Tumblr轻博客无论是web端还是移动端,都非常受欢迎,简单调研了一下,其中动画是我感兴趣的,特此写了个仿Tumblr点赞心破碎动画: 1.首先看下效果: 2.模仿Tumblr中的效果应用如下: 原理:使用按钮点击Action增加两个事件,通过改变背景hidden和frame,切换图片,增加动画效果等: setupUI及touch Action: <span style="font-size:14px;">- (void)setupUI { // 点击的btn UIB

  • iOS开发中TabBar再次点击实现刷新效果

    需求 之前已经实现了自定义TabBar,如图所示: 自定义TabBar.jpeg 现在需要实现一个类似今日头条TabBar的功能 -- 如果继续点击当前TabBar的选中项,那么该界面需要刷新UITableView. 分析 既然已经自定义了TabBar,那么最简单的就是在自定义中给TabBar中需要的UITabBarButton添加事件 -- 点击就发送通知,并且将当前的索引传出去.对应的界面监听通知,拿到索引比对,如果和当前索引一致,就执行对应的操作. 实现 1. 自定义TabBar的layo

  • iOS开发中苹果输入手机号变用户的名字

    今天我们的用户输入手机号之后变成了用户的名字,没办法获取验证码,因为手机格式不对.我还是头一次遇到这样的事情. 1.文本替换 遇到这种事情肯定去百度啊,发现还真有人和我遇到相同的情况,原来这个用户在设置->通用->键盘->文本替换把自己的手机号设置自己的名字了,这样只要在UITextField中输入自己的手机号,输入完就会变成自己的名字,出现上图的情况. 其实这个功能还是满好玩的,不过用户要是把自己的手机号设置文本替换了,那么在APP里注册就会出现问题了.当时我就想是不是微信也这样啊,

  • IOS开发中加载大量网络图片优化方法

    IOS开发中加载大量网络图片如何优化 1.概述 在IOS下通过URL读一张网络图片并不像其他编程语言那样可以直接把图片路径放到图片路径的位置就ok,而是需要我们通过一段类似流的方式去加载网络图片,接着才能把图片放入图片路径显示.比如: -(UIImage *) getImageFromURL:(NSString *)fileURL { //NSLog(@"执行图片下载函数"); UIImage * result; NSData * data = [NSData dataWithCont

  • 浅谈iOS开发中static变量的三大作用

    (1)先来介绍它的第一条也是最重要的一条:隐藏 当我们同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性.为理解这句话,我举例来说明.我们要同时编译两个源文件,一个是a.c,另一个是main.c. 下面是a.c的内容 char a = 'A'; // global variable void msg() { printf("Hello\n"); } 下面是main.c的内容 int main(void) { extern char a; // extern v

  • 详解IOS开发中生成推送的pem文件

    详解IOS开发中生成推送的pem文件 具体步骤如下: 首先,需要一个pem的证书,该证书需要与开发时签名用的一致. 具体生成pem证书方法如下: 1. 登录到 iPhone Developer Connection Portal(http://developer.apple.com/iphone/manage/overview/index.action )并点击 App IDs 2. 创建一个不使用通配符的 App ID .通配符 ID 不能用于推送通知服务.例如,  com.itotem.ip

  • iOS开发中AVPlayer的简单应用

    前言 在iOS开发中,播放视频通常有两种方式,一种是使用MPMoviePlayerController(需要导入MediaPlayer.Framework),还有一种是使用AVPlayer.关于这两个类的区别简而言之就是MPMoviePlayerController使用更简单,功能不如AVPlayer强大,而AVPlayer使用稍微麻烦点,不过功能更加强大.下面这篇文章主要介绍下AVPlayer的简单应用,需要的朋友们一起来看看吧. AVPlayer的简单应用 1.引入系统框架 2.创建视频的u

  • IOS开发中禁止NavigationController的向右滑动返回

    IOS开发中禁止NavigationController的向右滑动返回 大家在进行开法的时候细心的朋友会发现,.用后在屏幕的最左边,向右滑动,,你会发现,你的App返回到了上一个页面,这是怎么回事呢, 在你的App中输入UINavigationController ,然后按住commend键,点击鼠标,跳进去,如下图: 在UINavigationController 的属性中你会发现 红色下划线部分,你看到了UINavigationController 自带的有一个panGeesture,所以,

  • iOS开发中如何实现一个平滑的颜色过渡

    如何从A颜色平滑的过渡到B颜色 同一个视图,随着进度或者其他过程的变化,从A颜色过渡到B颜色. 所有的颜色都是是由RGB三原色组成,在iOS开发中,通过RGB值的组合来显示不同的颜色.一次A-B其实就是RGB值的改变,如何平滑的过渡呢?那就是等比例的改变RGB值! 那么,如何获取颜色的RGB值呢? - (NSArray *)getRGBDictionaryByColor:(UIColor *)originColor { CGFloat r=0,g=0,b=0,a=0; if ([self res

  • IOS 开发中画扇形图实例详解

    IOS 开发中画扇形图实例详解 昨天在做项目中,遇到一个需要显示扇形图的功能,网上搜了一下,发现code4app里面也没有找到我想要的那种类似的效果,没办法了,只能自己学习一下如何画了. 首先我们需要了解一个uiview的方法 -(void)drawRect:(CGRect)rect 我们知道了这个方法,就可以在自定义UIView的子类的- (void)drawRect:(CGRect)rect里面绘图了,关于drawrect的调用周期,网上也是一找一大堆,等下我会整理一下,转载一篇供你们参考.

随机推荐