iOS开发中仿Tumblr点赞心破碎动画效果
发布时间 - 2026-01-11 00:38:55 点击率:次最近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点赞心破碎动画效果,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
# ios点赞动画效果
# ios仿tumblr点赞
# 仿tumblr心破碎
# iOS实现抖音点赞动画效果
# iOS实现点赞动画特效
# iOS使用核心动画和粒子发射器实现点赞按钮的方法
# 基于UIControl控件实现ios点赞功能
# mysql之脏读、不可重复读、幻读的区别及说明
# 小编
# 在此
# 感兴趣
# 给大家
# 写了
# 受欢迎
# 所述
# 给我留言
# 感谢大家
# 疑问请
# 有任何
# 大后
# 博客
# setImage
# KKPraiseBtnWH
# icon_like
# imageNamed
# UIImage
# praiseBtn
# UIButton
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
laravel怎么在请求结束后执行任务(Terminable Middleware)_laravel Terminable Middleware请求结束任务执行方法
Laravel怎么生成URL_Laravel路由命名与URL生成函数详解
香港服务器WordPress建站指南:SEO优化与高效部署策略
Laravel如何使用缓存系统提升性能_Laravel缓存驱动和应用优化方案
Laravel如何实现多表关联模型定义_Laravel多对多关系及中间表数据存取【方法】
零基础网站服务器架设实战:轻量应用与域名解析配置指南
如何快速选择适合个人网站的云服务器配置?
Python文本处理实践_日志清洗解析【指导】
Laravel如何集成微信支付SDK_Laravel使用yansongda-pay实现扫码支付【实战】
Android中Textview和图片同行显示(文字超出用省略号,图片自动靠右边)
Laravel怎么返回JSON格式数据_Laravel API资源Response响应格式化【技巧】
Laravel怎么集成Vue.js_Laravel Mix配置Vue开发环境
Laravel如何集成第三方登录_Laravel Socialite实现微信QQ微博登录
大连 网站制作,大连天途有线官网?
微信小程序 input输入框控件详解及实例(多种示例)
Laravel如何编写单元测试和功能测试?(PHPUnit示例)
如何用AWS免费套餐快速搭建高效网站?
怎么制作一个起泡网,水泡粪全漏粪育肥舍冬季氨气超过25ppm,可以有哪些措施降低舍内氨气水平?
Laravel的路由模型绑定怎么用_Laravel Route Model Binding简化控制器逻辑
浅谈Javascript中的Label语句
北京网站制作的公司有哪些,北京白云观官方网站?
详解jQuery中基本的动画方法
Laravel队列由Redis驱动怎么配置_Laravel Redis队列使用教程
微信小程序 wx.uploadFile无法上传解决办法
如何快速搭建虚拟主机网站?新手必看指南
进行网站优化必须要坚持的四大原则
如何用AI一键生成爆款短视频文案?小红书AI文案写作指令【教程】
javascript中对象的定义、使用以及对象和原型链操作小结
如何获取PHP WAP自助建站系统源码?
教你用AI润色文章,让你的文字表达更专业
通义万相免费版怎么用_通义万相免费版使用方法详细指南【教程】
详解一款开源免费的.NET文档操作组件DocX(.NET组件介绍之一)
香港服务器网站推广:SEO优化与外贸独立站搭建策略
Laravel如何使用Socialite实现第三方登录?(微信/GitHub示例)
动图在线制作网站有哪些,滑动动图图集怎么做?
Win11怎么开启自动HDR画质_Windows11显示设置HDR选项
laravel怎么使用数据库工厂(Factory)生成带有关联模型的数据_laravel Factory生成关联数据方法
百度浏览器网页无法复制文字怎么办 百度浏览器复制修复
Laravel如何使用Eloquent ORM进行数据库操作?(CRUD示例)
简历在线制作网站免费版,如何创建个人简历?
Laravel怎么使用artisan命令缓存配置和视图
制作网站软件推荐手机版,如何制作属于自己的手机网站app应用?
如何用y主机助手快速搭建网站?
Laravel如何实现文件上传和存储?(本地与S3配置)
浅析上传头像示例及其注意事项
Laravel中的withCount方法怎么高效统计关联模型数量
如何快速登录WAP自助建站平台?
phpredis提高消息队列的实时性方法(推荐)
Laravel如何处理文件下载请求?(Response示例)
打造顶配客厅影院,这份100寸电视推荐名单请查收

