最近要用到类似支付宝蚂蚁森林的动画效果,所以就简单写了一个比较简单的一个demo,效果图如下:

效果图1

需求:

在这个view上面随机出现n个黄钻(button),黄钻按钮还得上下抖动,箭头1指向的位置不能出现随机的黄钻,而且不能超过屏幕,超过屏幕的要重新生成,中间箭头1位置同样,不能超过那个部分,然后点击黄钻,然后出现动画(同蚂蚁森林,点击水滴飘向数的动画一样)然后慢慢的消失,最后箭头3的位置数字会刷新新的(就是加上黄钻下面的数字)

1,先一步一步来,怎么让button随机出现,首先想到的是arc4random() %,话不多说上代码intx =arc4random() % (int)SCREEN_WIDTH;//背景view的宽度

inty =  arc4random() % (int)300;//背景view的高度

其实就是随机那个上半部分view 宽跟高,随机数出来了怎么判断超出屏幕的呢,这样写,我先把随机出来的坐标拿到,buttonFrame是 随机出来坐标,也就是随机出来的button的frame,CGRect buttonFrame= CGRectMake(x, y, self.iconImageView.frame.size.width, self.iconImageView.frame.size.height);

2超过屏幕的怎么办,下面就该加个判断,判断的是当button的中心坐标加上button的宽度跟屏幕宽度作比较,高度同样,如果超出来,我有添加一个标识,超出了 isintersect=yes 然后判断一下就行 超出的 重新获取随机坐标 然后在走一遍流程,do{

inti=0;

if((buttonFrame.origin.x+buttonFrame.size.width)>SCREEN_WIDTH||(buttonFrame.origin.y+buttonFrame.size.height)>300)

{

isIntersect=YES;

}else

{

isIntersect=NO;

for(idobjinself.view.subviews)

{

if([objisKindOfClass:[ZCAnimmalButtonclass]])

{

i++;

ZCAnimmalButton* mybutton = (ZCAnimmalButton*)obj;

if(CGRectIntersectsRect(buttonFrame,mybutton.frame))

{

isIntersect=YES;

break;

}

}

if(i==count)

{

isIntersect=NO;

}

}

}

if(isIntersect)

{

x =arc4random() % (int)SCREEN_WIDTH;

y =arc4random() % (int)300;

buttonFrame=CGRectMake(x, y,self.iconImageView.frame.size.width,self.iconImageView.frame.size.height);

}

}while(isIntersect);

3.如何做到像蚂蚁森林点击水滴然后飘向树木 然后消失,因为是轨迹移动,所以就想到了用 (贝塞尔曲线)UIBezierPath 做出轨迹线 具体怎么写的看代码,先是用UIBezierPath做出轨迹线,然后在吧轨迹赋值给CAKeyframeAnimation,在给button 添加动画 就可以啦,怎么让他消失呢,就是CAKeyframeAnimation有个delegate 继承一下,然后有个- (void)animationDidStop:(CAAnimation*)anim finished:(BOOL)flag,意思就是动画结束的操作 在这里面写就好UIBezierPath *movePath = [UIBezierPath bezierPath];     [movePathmoveToPoint:CGPointMake(self.center.x,self.center.y)];

switch (self.setting.animationType) {

case AnimmalButtonYypeLine://直线

[movePathaddLineToPoint:self.point];

break;

case AnimmalButtonTypeCurve://曲线

//抛物线

[movePathaddQuadCurveToPoint:self.pointcontrolPoint:CGPointMake(self.point.x,self.center.y)];

break;

default:

break;

}

//位移动画

CAKeyframeAnimation *animation = [CAKeyframeAnimation animationWithKeyPath:@"position"];

//移动路径

animation.path= movePath.CGPath;

animation.duration=self.setting.duration;

animation.autoreverses=NO;

animation.repeatCount=1;

animation.calculationMode = kCAAnimationPaced;

animation.delegate=self;

[self.layeraddAnimation:animationforKey:@"position"];

});

4.抖动效果 这个更简单啦  运用 uiview  animateWithDuration 参数是什么意思就不写啦 就这样抖动效果就出来啦(void)ImageSpring:(UIButton *)btn {

[UIView animateWithDuration:0.5 animations:^{

btn.frame = CGRectMake(btn.frame.origin.x, btn.frame.origin.y+10, 40, 40);

}];

[UIView animateWithDuration:0.5 delay:0.5 options:UIViewAnimationOptionAllowUserInteraction animations:^{

btn.frame = CGRectMake(btn.frame.origin.x, btn.frame.origin.y-10, 40, 40);

} completion:^(BOOL finished) {

[self ImageSpring:btn];

}];

}

写的不是很好,文采跟技术不是很高 所以就大概写了一下  有什么不懂得 可以私聊我,

php蚂蚁森林的效果,iOS仿支付宝蚂蚁森林动画效果相关推荐

  1. iOS仿支付宝芝麻信用仪表盘效果

    概述 自定义View之高仿支付宝芝麻信用分数仪表盘动画效果 详细 代码下载:http://www.demodashi.com/demo/10654.html 仿支付宝芝麻信用仪表盘效果 一.主要思路 ...

  2. iOS 仿抖音点赞动画效果

    1. 概述 最近看到抖音点赞爱心的动画效果比较好,出于好奇,自己也研究仿照动画效果写了一个,不喜欢的朋友可不要喷我噢

  3. iOS 仿支付宝刮刮乐效果

    支付宝里有个刮刮乐中奖, 和大街小巷里的类似彩票刮刮乐的效果一样. 实现思路, 其实很简单的三步: 展示刮出来的效果的view: 即刮开后刮刮乐效果展示-显示的文字Label 设置遮挡在外面的Imag ...

  4. 仿支付宝蚂蚁森林效果

    CustomWaterView 项目地址:xiaohaibin/CustomWaterView  简介::star: 仿支付宝蚂蚁森林效果 更多:作者   提 Bug 标签: 实现原理文章:https ...

  5. Android 仿支付宝蚂蚁森林动画效果

    Android 动画可以归纳为以下几种: 视图动画(View 动画) 帧动画(Frame 动画.Drawable 动画) 属性动画 触摸反馈动画(Ripple Effect) 揭露动画(Reveal ...

  6. iOS 仿支付宝密码支付

    代码地址如下: http://www.demodashi.com/demo/11484.html 一.准备工作 xcode 主要实现输入密码的时候不可见 二.程序实现 实现思路怎样 在支付宝输入密码的 ...

  7. ios开发oc高仿京东金融白条额度余额的 ios开发水波纹 ios开发水正弦曲线波纹 ios开发雷达扫描的动画效果

    ios开发oc高仿京东金融白条额度余额的   ios开发水波纹   ios开发水正弦曲线波纹 直接上代码,复制粘贴就可以 vc里的 WaterRippleView *topView = [[Water ...

  8. ios开发oc高仿京东金融白条额度余额的 ios开发水波纹 ios开发水正弦曲线波纹 ios开发雷达扫描的动画效果...

    ios开发oc高仿京东金融白条额度余额的   ios开发水波纹   ios开发水正弦曲线波纹 直接上代码,复制粘贴就可以 vc里的 WaterRippleView *topView = [[Water ...

  9. android菊花动画,Android实现仿iOS菊花加载圈动画效果

    常见的实现方式 切图,做旋转动画 自定义View,绘制效果 gif图 1.切图会增加体积,但相对简单,不过在换肤的场景下,会使用不同颜色,需要准备多张图,不够灵活. 2.由于自定义的好处,不同颜色只需 ...

最新文章

  1. System.exit(0)和System.exit(1)区别
  2. android中可以使用bitmap的平铺,镜像平铺等减小图片带来的apk过大的问题
  3. Python数据结构与算法(第三天)
  4. Mysql中的增删改查操作
  5. 配置Goldengate支持DDL
  6. 转贴——灰鸽子的危害超出‘熊猫烧香’10倍
  7. 三相电压和电流的模拟前端处理
  8. android com.squareup,android – 无法导入com.squareup.okhttp.OkHttpClient;
  9. 从源码说说dispatchTouchEvent与onTouchEvent的关系以及OnTouchListener的用法
  10. 从一个基础Javascript面试题谈起
  11. SQLServer数据库差异备份
  12. Excel中,条件格式的跟多应用-「数字条」「图标集」
  13. sourceMap到底是个啥玩意?
  14. shell 封装方法_反弹shell逃逸基于execve的命令监控(上)
  15. 通过51单片机开发板USB转TTL模块烧录ESP8266-01固件
  16. 计算机科学与技术专业课程简介
  17. 今日头条推荐算法原理全文详解之三
  18. M26X2 4G工业路由器的技术应用
  19. 微信支付商户接入(一)
  20. 小米笔记本重装系统后触摸板失灵 的原因之一

热门文章

  1. 基于uVision中的STM32F103C8编程第一弹
  2. 汽车大数据榜单怎么玩玩玩玩玩,完?
  3. 计算机毕业生的简历,计算机系毕业生的个人简历
  4. 日本語トレーニング(一)
  5. 指纹识别上线 考勤设备联网
  6. 【PMP考试秘笈】第四式:加快答题速度,关键词很关键
  7. java if语句 简写_if语句有哪几种格式
  8. (Aleppo + HAIST + SVU + Private) CPC 2022
  9. nginix+openresty+redis+tomcat实现多级缓存
  10. 做市场 就是定义一种生活方式