使用前
需引入QuartzCore.framework, 并在相关文件中加入 #import "QuartzCore/QuartzCore.h"
定义
shakeFeedbackOverlay为UIImageView
设置
self.shakeFeedbackOverlay.alpha = 0.0;
self.shakeFeedbackOverlay.layer.cornerRadius = 10.0; //设置圆角半径
1、图像左右抖动
CABasicAnimation* shake = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"];
shake.fromValue = [NSNumber numberWithFloat:-M_PI/32];
shake.toValue = [NSNumber numberWithFloat:+M_PI/32];
shake.duration = 0.1;
shake.autoreverses = YES; //是否重复
shake.repeatCount = 4;
[self.shakeFeedbackOverlay.layer addAnimation:shake forKey:@"shakeAnimation"];
self.shakeFeedbackOverlay.alpha = 1.0;
[UIView animateWithDuration:2.0 delay:0.0 options:UIViewAnimationOptionCurveEaseIn | UIViewAnimationOptionAllowUserInteraction animations:^{ self.shakeFeedbackOverlay.alpha = 0.0; //透明度变0则消失 } completion:nil];
2、图像顺时针旋转
CABasicAnimation* shake = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"];
shake.fromValue = [NSNumber numberWithFloat:0];
shake.toValue = [NSNumber numberWithFloat:2*M_PI];
shake.duration = 0.8; shake.autoreverses = NO;
shake.repeatCount = 1;
[self.shakeFeedbackOverlay.layer addAnimation:shake forKey:@"shakeAnimation"];
self.shakeFeedbackOverlay.alpha = 1.0;
[UIView animateWithDuration:10.0 delay:0.0 options:UIViewAnimationOptionCurveEaseIn | UIViewAnimationOptionAllowUserInteraction animations:^{ self.shakeFeedbackOverlay.alpha = 0.0; } completion:nil];
3、图像关键帧动画
CAKeyframeAnimation *animation = [CAKeyframeAnimation animation];
CGMutablePathRef aPath = CGPathCreateMutable();
CGPathMoveToPoint(aPath, nil, 20, 20);
CGPathAddCurveToPoint(aPath, nil, 160, 30, 220, 220, 240, 420);
animation.path = aPath;
animation.autoreverses = YES;
animation.duration = 2;
animation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut];
animation.rotationMode = @"auto";
[ballView.layer addAnimation:animation forKey:@"position"];
4、组合动画 CAAnimationGroup
CABasicAnimation *flip = [CABasicAnimation animationWithKeyPath:@"transform.rotation.y"];
flip.toValue = [NSNumbernumberWithDouble:-M_PI];
CABasicAnimation *scale= [CABasicAnimation animationWithKeyPath:@"transform.scale"];
scale.toValue = [NSNumbernumberWithDouble:12];
scale.duration = 1.5;
scale.autoreverses = YES;
CAAnimationGroup *group = [CAAnimationGroup animation];
group.animations = [NSArray arrayWithObjects:flip, scale, nil];
group.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
group.duration = 3;
group.fillMode = kCAFillModeForwards;
group.removedOnCompletion = NO;
[ballView.layer addAnimation:group forKey:@"position"];
5、指定时间内旋转图片
//启动定时器旋转光圈
- (void)startRotate
{
self.rotateTimer = [NSTimer scheduledTimerWithTimeInterval:0.02
target:self
selector:@selector(rotateGraduation)
userInfo:nil
repeats:YES];
}
//关闭定时器
- (void)stopTimer
{
if ([self.rotateTimerisValid])
{
[self.rotateTimerinvalidate];
self.rotateTimer = nil;
}
}
//旋转动画
- (void)rotateGraduation
{
self.timeCount--;
if (self.timeCount == 0)
{
[self stopTimer];
// doSomeThing //旋转完毕 可以干点别的
self.timeCount = 25;
}
else
{
//计算角度 旋转
static CGFloat radian = 150 * (M_2_PI / 360);
CGAffineTransform transformTmp = self.lightImageView.transform;
transformTmp = CGAffineTransformRotate(transformTmp, radian);
self.lightImageView.transform = transformTmp;
};
}
调用方法
self.timeCount = 25; //动画执行25次
[self startRotate];相关推荐
抖音无人直播技术全解析:从原理、实操到合规化思考
直播技术作为内容分发的核心形式,其底层依赖于流媒体协议(如RTMP)与实时音视频编码推流。通过OBS等软件进行场景合成与虚拟摄像头技术,可以实现丰富的画面包装与自动化播放。这项技术的核心价值在于突破人力与时间的限制,实现内容的持续输出与流量获取,在电商带货、品牌展示、陪伴式内容等场景中具有应用潜力。然而,单纯依赖录播循环存在高风险,平台风控系统会通过内容重复性检测与互动行为模型进行识别。因此,更可持续的方向是探索“半无人直播”或自动化辅助工具,例如利用AI数字人驱动或直播切片技术,在合规前提下提升运营效率。
css3的一些动画(代码及演示)
CSS3 的一些动画(代码及演示) 1. 过渡: Transition(实现元素不同状态间的平滑过渡) 补间动画:从初始状态到终了状态。 帧动画:按固定顺序和速度播放。 属性: Transition-property:all; 所有属性均过渡 Transition-duration:1s; 设置过渡时间 Transition-timing-function:linear;设置运动曲线 (...
C#与西门子PLC S7-1500 S7协议PLC读写数据
/获取对应长度的字符串。//将val字符串转换为字符数组。//String写入。//String读取。//PLC类型 IP地址 机架号 槽号。1.类库使用S7netplus。
CSS day12 移动端布局练习
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-U...
ENVI水体提取流程实践与问题
ENVI水体提取流程实践与问题 卫片解译中,水体属于比较好判别的一类。有水体指数、阈值法、监督分类等一系列方法进行提取,今天介绍利用水体指数和ENVI提取水体的过程。 1.所用数据 Landsat8卫片1景、ENVI5.3。 2.辐射定标与水陆分离 由于要对卫片进行水体指数的计算,因此需要对数据进行辐射定标以及大气校正的预处理。 辐射定标就是将图像的数字量化值(DN)转化为辐射亮度值或者反射率或者表面温度等物理量的处理过程。在工具栏中搜索Radiometric Correction,点开进行辐射定标。
传感器校准与标定:传感器的灵敏度校准_(11).常见传感器的灵敏度校准方法
线性校准:适用于传感器输出与输入之间存在线性关系的情况。通过收集数据并使用最小二乘法拟合线性方程,可以确定斜率和截距,从而实现校准。非线性校准:适用于传感器输出与输入之间存在非线性关系的情况。通过收集数据并使用非线性拟合方法(如最小二乘法),可以确定多项式或其他非线性方程的参数,从而实现校准。温度补偿校准:适用于传感器在不同温度下输出特性变化的情况。通过收集不同温度下的数据并使用温度补偿方程,可以提高传感器在不同温度下的测量精度。其他校准方法。
HTML创意动画代码
这个代码使用了 Canvas 技术,创建了一个随机生成的气泡背景并且让气泡动态漂浮,形成了一个很有趣的效果。你可以在这个基础上尝试进行一些自己的创意,比如修改气泡的数量、大小、颜色,以及运动的方式等等。 这个代码使用了 CSS 的动画和阴影特效,让页面中的文字在红、橙、黄、绿、蓝五种颜色之间不断变化,形成了一个很有趣的效果。你可以在这个基础上尝试进行一些自己的创意,比如修改文字的大小、样式、颜色,以及变化的频率和方式等等。 该示例中,我们使用了 transform-style: preserve-3d 属性
【批处理脚本】-0.1-如何运行批处理bat文件
如何运行批处理bat文件
八种炫酷纯CSS加载动画代码
加载1CSS源码.title{ width: 100%; text-align: center; margin:60px 0; font-size: 18px; color: #999; } .loadingOne{ width: 80px; height: 40px; margin: 0 auto; } .loadingOne span{ display: inline-block; width: 8px; hei..
【Android 11】使用Android Studio调试系统应用之Settings移植(三):构建Settings、SettingsLib项目文件
基于android 11,本系列文章力争实用,讲解使用AS调试系统app的方法,并提供了配套源下载,供学习调试。上一篇文章[Android 11]使用Android Studio调试系统应用(二):依赖分析、android.bp、静态和动态依赖,讲解了如何搭建编译服务器,如何下载AOSP源码,如何切换到AOSP的指定分支(android-11-r39),以及如何编译、解决编译错误、运行模拟器,本文将开始讲解如何构建Settings的AS工程文件! 走过、路过,有用过的同学,记得给个赞O(∩_∩)O哈!
SAP_MM_配额安排_PA认证总结
配额安排是企业进行供应商管理的一种方式。通过配额管理,企业可以与多家供应商保持业务往来,以保证某些紧缺原材料的正常供货。此外,企业也可以通过不同的配额比例,提高供应商优化服务、降低价格的积极性。
c语言中的简单动画(带有源码)
**1.** **怎样实现动画** 相信大家已经对动画的原理已经不陌生了。想要目标物体动起来,只需要逐个播放目标物体每一时刻位 置的图片。只要播放的速度足够快,人们就会在视觉上认为目标物体动起来了。一般来说电视每秒会播 放24帧静态画面,而游戏则更高60 120。
YOLOv11 损失函数进阶:SlideLoss 让小目标检测精度飙升
创建self.loss_fun = loss_fun # 基础损失函数(如BCEWithLogitsLoss)self.loss_coef = loss_coef # 损失系数# 计算滑动权重:根据预测与真实值的差异判断样本难度# 难度越高,权重越大该类在原有损失函数的基础上,通过diff计算样本预测与真实值的差异(差异越大,样本越难),进而生成动态权重,实现对难样本的重点学习。
ios常用的几个动画代码
? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
VB摄像头监控
该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制
假人有限元模型
假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用
win10 跳过U8环境检测的IE WebControls.rar
win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。
Flutter Animation 动画
Flutter动画实现有很多,勤奋的小伙伴可以去官网查看。本文不多做介绍,主要介绍几个常用的动画。 动画容器AnimatedContainer AnimatedContainer提供了一个方便的方法来创建具有特定属性的插件:宽度,高度,背景颜色,填充,边框等。 //属性使用变量,当变量值改变时可以看到容器改变的动画。 AnimatedContainer( // 定义动画需要多长时间 ...
精雕软件(JDpaint) 5.5 绿色版
精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版
JQuery动画函数总结
jquery中常用的动画的方法就是hide与show. $(element).hide这段代码可以与这相等element.css("display","none") 在hide(time)与show(time)中填入事件,可以慢慢消失跟显现。可以修改元素的多个样式,高度,宽度,不透明度。 另一组方法fadeIn与fadeOut这个与hide跟show不同的是,当使用hide或者show的时候
推荐几个常用的CSS动画库
css动画合集
几个css和动画组件库
animate.csshttps://animate.style/animejshttps://animejs.com/swiperhttps://www.swiper.com.cn/bootcsshttps://v5.bootcss.com/docs/content/tables/animate:一个轻量级的CSS动画库,专注于通过预定义的CSS类快速实现常见动画效果(如淡入、滑动、弹跳等)。适合简单交互动画或页面元素的基础动效,无需JavaScript。animejs:一个强大的JavaScript动画
WPF三大常用动画
(1)WPF动画【线性插值&关键帧&路径】: 1、动画有两种类型:①Animation线性插值动画:在开始值与结束值之间以逐步增加的方式改变属性的动画。②AnimationUsingKeyFrames关键帧动画:从一个值突然变成另一值的动画,所有关键帧动画都使用"类型名 + AnimationUsingKeyFrames"的形式命名。③AnimationUsingPath路径动画:基于路径而创作的动画。 2、动画的构成:布局控件 - 事件触发器【Trigger】 - 开始播放故事板【Begi
属性动画、转场动画、帧动画
今日核心:容器组件:属性动画、转场动画、ImageAnimator属性值的变化,通常会引发 UI 的变化,结合动画可以让这个变化过程【更为流畅】,反之这个过程将在一瞬间完成,用户体验不好,观感突兀。
Android常用动画Animation的使用
Andriod中有几种常用的Animation AlphaAnimation 淡入淡出效果 RotateAnimation 旋转效果 ScaleAnimation 缩放动画 TranslaAnimation 移动动画 这几种动画可以通过xml实现也可以通过java代码实现,先看下在代码中是怎样实现了 在布局文件(animation.xml)中声明几个效果的按钮和图片 <Linea
【AE动画表达式】一些常用的动画代码
我正在用AE做动画,请你给我写一段嚷一个文字弹性翻转过来并慢慢停下的表达式代码。但是,AI的时代,一切都变得简单!解决方案当然是AI!动画原理我们就不再讲了!这个代码实现了弹性缩放。
WPF动画常用三个属性
WPF中有很多属性,动画的属性常用的有三个,并不是说只有三个,只是用的频率比较多,所以常常会用到它们,三个属性分别是AccelerationRatio、DeceleRation、RepeatBehavior属性。Animation其实是一个类,是可以同时发生的动画,只要创建多个Animation动画,然后为元素设置属性就可以了,并且如图1所示我们用到的是双精度数据类型,为了实现属性的动态化,需要使用DoubleAnimation类,所以我们在图2中实例化了DoubleAnimation类。
509



被折叠的 条评论
为什么被折叠?



