一 Core Animation
核心动画是分三层进行的-动画层树(CALayer Tree)M、展示树(Presentation Tree)、以及渲染树(Render Tree)。
每一个动画层有着自己的坐标系,这个坐标系独立于其父动画层。在iOS上,动画层的坐标系原点在左上角,坐标轴向右向下延伸。
动画有隐式和显示之分。隐式动画指的是,无须创建动画对象,只需改变动画层的属性,让核心动画自己去完成动画效果。显示动画指的是,需要自己创建和管理动画对象,并且将它们应用到动画层,才能显示动画效果。
UIImageView有animationImages属性,如果将一个UIImage对象构成的NSArray数组赋值给它,UIImageView将轮流显示这些图像。给UIImageView发送startAnimating消息,那么它就开始逐帧显示动画了。animationDuration属性标明了每一帧动画占用的时间,默认1/30秒。animationRepeatCount属性标明了动画重复次数,缺省为0,表示不断重复下去。
方法:
+beginAnimations:context:标志动画代码开始
+commitAnimations:标志动画代码结束,程序会创建新的线程,并准备运行动画
+setAnimationStartDate:设置动画开始时间。
+setAnimationsEnabled:可以用来开启或禁止动画显示。
+setAnimationDelegate:设置代理,可以接收到UIView的代理方法。
+setAnimationWillStartSelector:设置动画开始前将发送给代理的方法。
+setAnimationDidStopSelector:设置动画停止后将发送给代理的方法。
+setAnimationDuration:设置动画持续时间。
+setAnimationDelay:设置一段时间,动画将在这段时间后开始执行。不建议使用
+setAnimationCurve:设置动画曲线,如开始慢,后面快。
+setAnimationRepeatCount:设置动画重复次数。
+areAnimationEnabled:检查是否已经启动动画。
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:2.0];
CGAffineTransform newTransform = CGAffineTransformRotate(view.transform, 3.14/2);
view.trnsform = newTransform;
[UIView commitAnimations];
//简单移动
imageView.transform = CGAffineTransformIdentity;
imageView.frame=CGRectMake(0, 100, 320, 320);
[UIView beginAnimations:@"clearmemory"context:imageView];
[UIView setAnimationDelegate:self];
[UIView setAnimationDidStopSelector:@selector(enablebutton)];
imageView.frame=CGRectMake(34, 0, 320, 320);
[UIView commitAnimations];
//动画曲线
[UIView beginAnimations:nilcontext:nil];
[UIView setAnimationDuration:1];
[UIView setAnimationDelegate:self];
[UIView setAnimationCurve:UIViewAnimationCurveEaseIn];
// UIViewAnimationCurveEaseInOut, // slow at beginning and end
//UIViewAnimationCurveEaseIn, // slow at beginning
//UIViewAnimationCurveEaseOut, // slow at end
//UIViewAnimationCurveLinear //恒定速度
[UIView setAnimationDidStopSelector:@selector(enablebutton:)];
imageView.frame=CGRectMake(22, 0, 320, 320);
[UIView commitAnimations];
//反向重复
[UIView beginAnimations:@"animation3" context:imageView1];
[UIView setAnimationCurve:UIViewAnimationCurveLinear];
[UIView setAnimationDuration:1.0];
[UIView setAnimationRepeatAutoreverses:YES];
[UIView setAnimationRepeatCount:10];
[UIView setAnimationDelegate:self];
[UIView setAnimationDidStopSelector:@selector(enablebutton:)];
imageView1.alpha=0;
[UIView commitAnimations];
// 延时,缓入,缓出
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDelay:0.5];
[UIView setAnimationDuration:1.5];
[UIView setAnimationCurve:UIViewAnimationCurveEaseIn];
[UIView setAnimationRepeatAutoreverses:YES];
[UIView setAnimationRepeatCount:2];
[UIView setAnimationDelegate:self];
[UIView setAnimationDidStopSelector:@selector(enablebutton:)];
imageView.frame=CGRectMake(120, 0, 200, 200);
[UIView commitAnimations];
//缓出
[UIView beginAnimations:nilcontext:nil];
[UIView setAnimationDuration:1];
[UIView setAnimationCurve:UIViewAnimationCurveEaseOut];
[UIView setAnimationDelegate:self];
[UIView setAnimationDidStopSelector:@selector(enablebutton:)];
imageView.frame =CGRectMake(235, 144, 200 , 200);
[UIView commitAnimations];
//放大
[UIView beginAnimations:nilcontext:nil];
[UIView setAnimationDuration:1];
[UIView setAnimationCurve:UIViewAnimationCurveLinear];
[UIView setAnimationDelegate:self];
[UIView setAnimationDidStopSelector:@selector(enablebutton:)];
imageView.transform=CGAffineTransformMakeScale(2, 2);
[UIView commitAnimations];
//旋转放大这里用到179.9是因为你不管前面加-+都是逆时针
[UIView beginAnimations:nilcontext:nil];
[UIView setAnimationDuration:1];
[UIView setAnimationCurve:UIViewAnimationCurveLinear];
[UIView setAnimationDelegate:self];
[UIView setAnimationDidStopSelector:@selector(enablebutton:)];
CGAffineTransform tranform1=CGAffineTransformMakeScale(1, 1);
CGAffineTransform tranform3=CGAffineTransformMakeTranslation(200, 200);
CGAffineTransform tranform2=CGAffineTransformMakeRotation(179.9*M_PI/180.0);
imageView.transform =CGAffineTransformConcat(tranform1, tranform3);
[UIView commitAnimations];
//平移旋转
[UIView beginAnimations:nilcontext:nil];
[UIView setAnimationDuration:1];
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
[UIView setAnimationDelegate:self];
[UIView setAnimationDidStopSelector:@selector(enablebutton:)];
CGAffineTransform tranform1=CGAffineTransformMakeTranslation(-200, 0);
// CGAffineTransform tranform2= CGAffineTransformMakeRotation(179.9*M_PI/180.0);
imageView.transform =CGAffineTransformRotate(tranform1, 359.9*M_PI/180.0);
[UIView commitAnimations];
//翻转
[UIView beginAnimations:nilcontext:nil];
[UIView setAnimationDuration:1];
[UIView setAnimationCurve:UIViewAnimationCurveEaseIn];
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRightforView:self.viewcache:YES];
//UIViewAnimationTransitionFlipFromLeft 从左往右翻
//UIViewAnimationTransitionFlipFromRight从右往左翻
//UIViewAnimationTransitionCurlUp 从上往下翻
//UIViewAnimationTransitionCurlDown 从下往上翻
[UIView setAnimationDelegate:self];
[UIView setAnimationDidStopSelector:@selector(enablebutton:)];
imageView.hidden=YES;
imageView1.hidden=NO;
[UIView commitAnimations];
//淡入淡出
CATransition *animation = [CATransition animation];
animation.duration = 0.75f; //动画时长
animation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn];
animation.delegate = self;
animation.type = kCATransitionFade; //过度效果
//kCATransitionFade 淡入淡出
//kCATransitionMoveIn 移入移出
//kCATransitionPush 压入推出
//kCATransitionReveal 覆盖移除
animation.subtype=kCATransitionFromLeft;
//kCATransitionFromRight 从左
//kCATransitionFromLeft 从右
//kCATransitionFromTop 从上
//kCATransitionFromBottom 从下
[self.view.layer addAnimation:animation forKey:@"animation"];
imageView.hidden=YES;
imageView1.hidden=NO;
-(void)enablebutton:(id)sender
{
imageView.transform=CGAffineTransformIdentity;
imageView.frame=CGRectMake(0, 0, 200, 200);
//btn.enabled=NO;
}
相关推荐
例如,我们可以使用`animate(withDuration:animations:)`方法来执行一个简单的动画序列,该方法接受两个参数:动画持续时间和一个闭包,闭包中包含了我们想要进行动画化的视图属性变化。 ```swift UIView.animate...
UIView 震动动画效果 AFViewShaker ,AFViewShaker 是一个简单的工具用来执行 。 使用方法: AFViewShaker *...
1. **复杂度**:`UIView`动画适合快速实现简单效果,而`CALayer`动画更适合复杂的动画需求。 2. **控制度**:`CALayer`动画提供了对动画的更多底层控制,如关键帧、路径动画等。 3. **性能**:在某些情况下,`...
在iOS开发中,UIView的动画效果是提升用户体验的重要手段之一,尤其在视图切换时,翻转动画可以带来富有立体感和平滑过渡的视觉效果。本主题将详细讲解如何实现"ios UIView翻转动画效果",以及如何在实际项目中应用...
`UIView`动画是苹果提供的一种简单而强大的方式,用于在用户界面上创建动态效果。本主题将深入探讨如何在Xcode 6环境下,针对simulator-iPhone 6设备使用`UIView`动画。 首先,`UIView`动画是基于Core Animation...
本示例“iOS中UIView的翻页动画demo”旨在演示如何为UIView实现逼真的翻页效果,让用户体验如同翻阅实体书页一样的平滑过渡。在实际应用中,这种动画效果通常用于电子书籍、杂志应用或任何需要模拟页面翻动的地方。 ...
下面是一个简单的CATransition转场动画实现示例: ```swift let transition = CATransition() transition.type = "cube" transition.subtype = kCATransitionFromLeft transition.duration = 2.0 imageView.layer....
在"UIView_animate"的示例中,可能包含了如何使用`UIView.animate(withDuration:animations:)`创建一个简单的淡入淡出动画。 例如,实现一个视图淡入动画可以这样做: ```swift UIView.animate(withDuration: 0.5,...
假设我们有一个名为`myView`的`UIView`实例,我们可以通过以下方式实现简单的缩放动画: ```swift UIView.animate(withDuration: 0.5) { myView.transform = CGAffineTransform(scaleX: 1.5, y: 1.5) } ``` 上述...
在iOS开发中,自定义`UIView`动画是一个常见的需求,特别是在构建交互丰富的用户界面时。本文将深入探讨如何使用Swift语言来实现一个简单的帧动画。帧动画是一种通过连续播放一系列图像来创建动态效果的技术,类似于...
它还为CABasicAnimation和动画选项的访问器提供了简单的构造器。例子您的UIView子类具有自定义动画属性: @implementation ANPCornerView@dynamic cornerRadius;- ( CGFloat ) cornerRadius { return self.
Swift-YGPulseView是一个基于Objective-C编写的动画库,它为开发者提供了在...通过理解其内部实现机制,我们可以学习到如何利用UIView的动画系统创建自定义动画,这对于提升iOS应用的视觉吸引力和交互性具有重要意义。
iOS 中对UIView简单的封装,换个说法:运用帧动画封装了一个HUD,使用起来简单方便,只需要调用 [RKJAnimatingHUD RKJStarAnimatingForView:self];或者 [RKJAnimatingHUD RKJStopAnimatingForView:self];一个类方法...
在本教程中,我们将深入探讨如何使用`UIView`的`animation`方法来创建简单的上、中、下移动动画效果。这涉及到iOS开发中的基本动画原理,以及如何通过代码控制视图的行为。 首先,我们要理解`UIView`动画的基本概念...
总结,"ios基础动画"涵盖的内容广泛,从UIView简单动画到Core Animation的高级技巧,都为开发者提供了丰富的工具来创造引人入胜的用户界面。理解并熟练掌握这些知识点,对于构建高质量的iOS应用至关重要。通过实践...
Swift DaisyChain是一个专门为iOS开发者设计的微框架,其主要目标是简化UIView的动画处理,使得动画链接变得极其简便。在iOS应用开发中,创建复杂的视图动画往往涉及到大量的代码,而DaisyChain通过提供一种链式编程...
我们可以使用`UIView.animate(withDuration:)`方法来创建简单的动画。例如,如果你想要在UIView周围创建一个旋转动画,你可以这样做: ```swift UIView.animate(withDuration: 1.0) { yourView.transform = ...
使用这个自定义视图就像使用普通的`UIView`一样简单,只需在代码中实例化`JudyWaterWaveView`,并将其添加到父视图中。通过修改上述属性,可以轻松地改变波浪动画的效果。例如: ```swift let waveView = ...
1. **动画类**:SYBlinkAnimationKit提供了一组预定义的动画类,如BlinkAnimation,允许开发者快速添加闪烁效果到任何UIView子类。这些类封装了动画的细节,使得代码更加简洁和可维护。 2. **属性定制**:开发者...
`RNPulseButton`是一个开源库,它为iOS开发者提供了一个简单且高度可定制的脉冲动画效果按钮,使得按钮在用户交互时可以呈现出吸引人的动态效果。 `RNPulseButton`的核心功能在于其脉冲动画,这种动画效果通常表现...