iOS添加购物车动画效果示例
发布时间 - 2026-01-10 23:17:52 点击率:次一、计算动画开始结束点位置

方法:
- (CGPoint)convertPoint:(CGPoint)point toView:(nullable UIView *)view;
1) 动画开始位置fromCenter
复制代码 代码如下:
CGPoint fromCenter = [animationView convertPoint:CGPointMake(animationView.frame.size.width * 0.5f, animationView.frame.size.height * 0.5f) toView:keyWindow];
2)动画结束位置endCenter
复制代码 代码如下:
CGPoint endCenter = [endView convertPoint:CGPointMake(endView.frame.size.width * 0.5f, endView.frame.size.height * 0.5f) toView:keyWindow];
二、计算贝塞尔曲线(抛物线)的两个控制点
- controlPoint1是控制点1
- controlPoint2是控制点2
- A是controlPoint1和controlPoint2的中点
- controlPointC是fromCenter和B的中点
1)先设置控制点距最高点(fromCenter或endCenter)的水平距离controlPointEY,本篇默认controlPointEY = 100,即图1中点controlPointC到点A的距离。
2)计算控制点相对于点A的距离controlPointEX,即controlPoint1到A距离或controlPoint2到A距离,本篇设置为fromCenter.x到endCenter.x的1/4,即controlPointEX = (endCenter.x - fromCenter.x) * 0.25f;
3)计算两个控制点
CGPoint controlPoint1 = CGPointMake(controlPointCX - controlPointEX, controlPointCY - controlPointEY); CGPoint controlPoint2 = CGPointMake(controlPointCX + controlPointEX, controlPointCY - controlPointEY);
三、复制动画的layer
NSString *str = ((UIButton *)animationView).titleLabel.text; _animationLayer = [CATextLayer layer]; _animationLayer.bounds = animationView.bounds; _animationLayer.position = fromCenter; _animationLayer.alignmentMode = kCAAlignmentCenter;//文字对齐方式 _animationLayer.wrapped = YES; _animationLayer.contentsScale = [UIScreen mainScreen].scale; _animationLayer.string = str; _animationLayer.backgroundColor = [UIColor redColor].CGColor; [keyWindow.layer addSublayer:_animationLayer];
四、动画组合
1)运动轨迹(抛物线)
UIBezierPath *path = [UIBezierPath bezierPath]; [path moveToPoint:fromCenter]; [path addCurveToPoint:endCenter controlPoint1:controlPoint1 controlPoint2:controlPoint2]; CAKeyframeAnimation *pathAnimation = [CAKeyframeAnimation animationWithKeyPath:@"position"]; pathAnimation.path = path.CGPath;
2)旋转起来
CABasicAnimation *rotateAnimation = [CABasicAnimation animationWithKeyPath:@"transform.rotation"]; rotateAnimation.removedOnCompletion = YES; rotateAnimation.fromValue = [NSNumber numberWithFloat:0]; rotateAnimation.toValue = [NSNumber numberWithFloat:10 * M_PI]; rotateAnimation.timingFunction=[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn]
3)缩放动画
CABasicAnimation *scaleAnimation = [CABasicAnimation animationWithKeyPath:@"transform.scale"]; scaleAnimation.removedOnCompletion = NO; scaleAnimation.fromValue = [NSNumber numberWithFloat:1.0]; scaleAnimation.toValue = [NSNumber numberWithFloat:0.2];
4)透明度动画
CABasicAnimation *alphaAnimation = [CABasicAnimation animationWithKeyPath:@"opacity"]; alphaAnimation.removedOnCompletion = NO; alphaAnimation.fromValue = [NSNumber numberWithFloat:1.0]; alphaAnimation.toValue = [NSNumber numberWithFloat:0.1];
5)动画组合
CAAnimationGroup *groups = [CAAnimationGroup animation]; groups.animations = @[pathAnimation,rotateAnimation, scaleAnimation, alphaAnimation]; groups.duration = kShoppingCartDuration; groups.removedOnCompletion=NO; groups.fillMode=kCAFillModeForwards; groups.delegate = self; [_animationLayer addAnimation:groups forKey:@"group"];
动画效果:
下载地址:ShoppingCartAnimation_jb51.rar
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# ios购物车动画效果
# ios
# 添加购物车动画
# ios加入购物车动画
# iOS实现自定义购物车角标显示购物数量(添加商品时角标抖动 Vie)
# IOS购物车界面实现效果示例
# iOS实现电商购物车界面示例
# iOS搭建简易购物车页面
# 下载地址
# 相对于
# 设置为
# 大家多多
# 塞尔
# 点距
# endView
# controlPointEX
# controlPointEY
# li
# ul
# controlPointC
# CATextLayer
# _animationLayer
# text
# alignmentMode
# position
# bounds
# titleLabel
# layer
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?
如何在万网自助建站平台快速创建网站?
Laravel队列任务超时怎么办_Laravel Queue Timeout设置详解
在线教育网站制作平台,山西立德教育官网?
Laravel如何将应用部署到生产服务器_Laravel生产环境部署流程
Laravel的辅助函数有哪些_Laravel常用Helpers函数提高开发效率
如何用花生壳三步快速搭建专属网站?
最好的网站制作公司,网购哪个网站口碑最好,推荐几个?谢谢?
nodejs redis 发布订阅机制封装实现方法及实例代码
米侠浏览器网页图片不显示怎么办 米侠图片加载修复
如何快速配置高效服务器建站软件?
如何快速搭建高效WAP手机网站?
Android利用动画实现背景逐渐变暗
Laravel如何优化应用性能?(缓存和优化命令)
如何基于云服务器快速搭建网站及云盘系统?
广州网站制作公司哪家好一点,广州欧莱雅百库网络科技有限公司官网?
Laravel策略(Policy)如何控制权限_Laravel Gates与Policies实现用户授权
如何在IIS中新建站点并配置端口与IP地址?
ai格式如何转html_将AI设计稿转换为HTML页面流程【页面】
Laravel如何使用Gate和Policy进行权限控制_Laravel权限判定与策略规则配置
如何用PHP快速搭建CMS系统?
软银砸40亿美元收购DigitalBridge 强化AI资料中心布局
Laravel 419 page expired怎么解决_Laravel CSRF令牌过期处理
Laravel如何使用withoutEvents方法临时禁用模型事件
Laravel如何获取当前用户信息_Laravel Auth门面获取用户ID
手机网站制作与建设方案,手机网站如何建设?
装修招标网站设计制作流程,装修招标流程?
,网页ppt怎么弄成自己的ppt?
做企业网站制作流程,企业网站制作基本流程有哪些?
怎样使用JSON进行数据交换_它有什么限制
如何用IIS7快速搭建并优化网站站点?
Laravel如何创建和注册中间件_Laravel中间件编写与应用流程
Laravel的Blade指令怎么自定义_创建你自己的Laravel Blade Directives
如何在七牛云存储上搭建网站并设置自定义域名?
网站制作免费,什么网站能看正片电影?
如何在Windows服务器上快速搭建网站?
HTML5空格和nbsp有啥关系_nbsp的作用及使用场景【说明】
Swift中swift中的switch 语句
青岛网站建设如何选择本地服务器?
Android中Textview和图片同行显示(文字超出用省略号,图片自动靠右边)
如何快速使用云服务器搭建个人网站?
北京网页设计制作网站有哪些,继续教育自动播放怎么设置?
Laravel如何部署到服务器_线上部署Laravel项目的完整流程与步骤
JavaScript如何实现倒计时_时间函数如何精确控制
Laravel如何处理JSON字段_Eloquent原生JSON字段类型操作教程
成都品牌网站制作公司,成都营业执照年报网上怎么办理?
php8.4header发送头信息失败怎么办_php8.4header函数问题解决【解答】
魔毅自助建站系统:模板定制与SEO优化一键生成指南
Linux系统命令中screen命令详解
js实现获取鼠标当前的位置

