ios12新动画,ios动画效果

2020-11-12 阅读 金浩广整理

内容简介:ios12动画效果uiview类执行自动执行动画所需的工作,但在您要执行动画时仍会通知视图,因此需要将更改属性的代码包装成代码块。一。uiview动画的特定创建方法-(void)ios10过渡动画...

执行动画所需要的工作由UIView类自动完成,但仍要在希望执行动画时通知视图,为此需要将改变属性的代码包装到一个代码块中。

1.UIView动画具体创建方法-(void)buttonPressed{//交换本视图控制器中2个view位置[self.viewexchangeSubviewAtIndex:0withSubviewAtIndex:1];//UIView开始动画,第一个参数是动画的标识,第二个参数附加的应用程序信息用来传递给动画代理消息[UIViewbeginAnimations:@ViewFlipcontext:nil];//动画持续时间[UIViewsetAnimationDuration:1.25];//设置动画的回调函数,设置后可以使用回调方法[UIViewsetAnimationDelegate:self];//设置动画曲线,控制动画速度[UIViewsetAnimationCurve:UIViewAnimationCurveEaseInOut];//设置动画方式,并指出动画发生的位置[UIViewsetAnimationTransition:UIViewAnimationTransitionCurlUpforView:self.viewcache:YES];//提交UIView动画[UIViewcommitAnimations];}-(void)viewDidLoad{[superviewDidLoad];//主要功能通过UIView动画完成2个试图控制器的切换self.blueController=[[BlueViewControlleralloc]initWithNibName:nilbundle:nil];//设置导航控制器view的大小占整个屏幕[self.blueController.viewsetFrame:CGRectMake(0,0,self.view.frame.size.width,self.view.frame.size.height)];self.yellowController=[[YellowControlleralloc]initWithNibName:nilbundle:nil];[self.yellowController.viewsetFrame:CGRectMake(0,0,self.view.frame.size.width,self.view.frame.size.height)];//将2个控制器view插入到目前导航控制器视图上,yellowController后插入,显示在最前面[self.viewinsertSubview:self.blueController.viewatIndex:0];[self.viewinsertSubview:self.yellowController.viewatIndex:1];//创建导航控制器右按钮,按钮名字叫next//添加buttonPressed事件self.rightBarItem=[[UIBarButtonItemalloc]initWithTitle:@nextstyle:UIBarButtonItemStylePlaintarget:selfaction:@selector(buttonPressed)];//将按钮添加到导航控制器默认右按钮上self.navigationItem.rightBarButtonItem=self.rightBarItem;}有个问题:如果动画不放在按钮事件中,直接放到viewDidLoad里,程序首先执行这个controller,这时动画是不会显示的。

原因:出现这个问题是因为开机时候系统有个动画,系统动画和这个动画重复了。

解决方案:1。

将动画写在按钮事件中2。

利用定时器。

areAnimationsEnabled返回一个布尔值表示动画是否结束。

(BOOL)areAnimationsEnabled返回值如果动画结束返回YES,否则NO。

beginAnimations:context:开始一个动画块(void)beginAnimations:(NSString*)animationIDcontext:(void*)context参数animationID动画块内部应用程序标识用来传递给动画代理消息-这个选择器运用setAnimationWillStartSelector:和setAnimationDidStopSelector:方法来设置。

context附加的应用程序信息用来传递给动画代理消息-这个选择器使用setAnimationWillStartSelector:和setAnimationDidStopSelector:方法。

讨论这个值改变是因为设置了一些需要在动画块中产生动画的属性。

动画块可以被嵌套。

如果在没有在动画块中调用那么setAnimation类方法将什么都不做。

使用beginAnimations:context:来开始一个动画块并用commitAnimations类方法来结束一个动画块。

commitAnimations结束一个动画块并开始当他在动画块外时。

(void)commitAnimations讨论如果当前的动画块是最外层的动画块,当应用程序返回到循环运行时开始动画块。

动画在一个独立的线程中所有应用程序不会中断。

使用这个方法,多个动画可以被实现。

查看setAnimationBeginsFromCurrentState:来了解如果开始一个动画当另外一个动画在播放的时候。

layerClass返回类用来创建这一个本类的layer实例对象。

(Class)layerClass返回值一个用来创建视图layer的类讨论重写子类来指定一个自定义类用来显示。

当在创建视图layer时候调用。

默认的值是CALayer类对象。

setAnimationBeginsFromCurrentState:设置动画从当前状态开始播放。

(void)setAnimationBeginsFromCurrentState:(BOOL)fromCurrentState参数fromCurrentStateYES如果动画需要从他们当前状态开始播放。

否则为NO。

讨论如果设置为YES那么当动画在运行过程中,当前视图的位置将会作为新的动画的开始状态。

如果设置为NO,当前动画结束前新动画将使用视图最後状态的位置作为开始状态。

这个方法将不会做任何事情如果动画没有运行或者没有在动画块外调用。

使用beginAnimations:context:类方法来开始并用commitAnimations类方法来结束动画块。

默认值是NO。

setAnimationCurve:设置动画块中的动画属性变化的曲线。

(void)setAnimationCurve:(UIViewAnimationCurve)curve讨论动画曲线是动画运行过程中相对的速度。

如果在动画块外调用这个方法将会无效。

使用beginAnimations:context:类方法来开始动画块并用commitAnimations来结束动画块。

默认动画曲线的值是UIViewAnimationCurveEaseInOut。

setAnimationDelay:在动画块中设置动画的延迟属性(以秒为单位)(void)setAnimationDelay:(NSTimeInterval)delay讨论这个方法在动画块外调用无效。

使用beginAnimations:context:类方法开始一个动画块并用commitAnimations类方法结束动画块。

默认的动画延迟是0.0秒。

setAnimationDelegate:设置动画消息的代理。

(void)setAnimationDelegate:(id)delegate参数delegate你可以用setAnimationWillStartSelector:和setAnimationDidStopSelector:方法来设置接收代理消息的对象。

讨论这个方法在动画块外没有任何效果。

使用beginAnimations:context:类方法开始一个动画块并用commitAnimations类方法结束一个动画块。

默认值是nilsetAnimationDidStopSelector:设置消息给动画代理当动画停止的时候。

(void)setAnimationDidStopSelector:(SEL)selector参数selector当动画结束的时候发送给动画代理。

默认值是NULL。

这个选择者须有下面方法的签名:animationFinished:(NSString*)animationIDfinished:(BOOL)finishedcontext:(void*)context。

animationID一个应用程序提供的标识符。

和传给beginAnimations:context:相同的参数。

这个参数可以为空。

finished如果动画在停止前完成那返回YES;否则就是NO。

context一个可选的应用程序内容提供者。

和beginAnimations:context:方法相同的参数。

可以为空。

讨论这个方法在动画块外没有任何效果。

使用beginAnimations:context:类方法来开始一个动画块并用commitAnimations类方法结束。

默认值是NULL。

setAnimationDuration:设置动画块中的动画持续时间(用秒)(void)setAnimationDuration:(NSTimeInterval)duration参数duration一段动画持续的时间。

讨论这个方法在动画块外没有效果。

使用beginAnimations:context:类方法来开始一个动画块并用commitAnimations类方法来结束一个动画块。

默认值是0.2。

setAnimationRepeatAutoreverses:设置动画块中的动画效果是否自动重复播放。

(void)setAnimationRepeatAutoreverses:(BOOL)repeatAutoreverses参数repeatAutoreverses如果动画自动重复就是YES否则就是NO。

讨论自动重复是当动画向前播放结束後再重头开始播放。

使用setAnimationRepeatCount:类方法来指定动画自动重播的时间。

如果重复数为0或者在动画块外那将没有任何效果。

使用beginAnimations:context:类方法来开始一个动画块并用commitAnimations方法来结束一个动画块。

默认值是NO。

setAnimationRepeatCount:设置动画在动画模块中的重复次数(void)setAnimationRepeatCount:(float)repeatCount参数repeatCount动画重复的次数,这个值可以是分数。

讨论这个属性在动画块外没有任何作用。

使用beginAnimations:context:类方法来开始一个动画块并用commitAnimations类方法来结束。

默认动画不循环。

setAnimationsEnabled:设置是否激活动画(void)setAnimationsEnabled:(BOOL)enabled参数enabled如果是YES那就激活动画;否则就是NO讨论当动画参数没有被激活那么动画属性的改变将被忽略。

默认动画是被激活的。

setAnimationStartDate:设置在动画块内部动画属性改变的开始时间(void)setAnimationStartDate:(NSDate*)startTime参数startTime一个开始动画的时间讨论使用beginAnimations:context:类方法来开始一个动画块并用commitAnimations类方法来结束动画块。

默认的开始时间值由CFAbsoluteTimeGetCurrent方法来返回。

setAnimationTransition:forView:cache:在动画块中为视图设置过渡(void)setAnimationTransition:(UIViewAnimationTransition)transitionforView:(UIView*)viewcache:(BOOL)cache参数transition把一个过渡效果应用到视图中。

可能的值定义在UIViewAnimationTransition中。

view需要过渡的视图对象。

cache如果是YES,那么在开始和结束图片视图渲染一次并在动画中创建帧;否则,视图将会在每一帧都渲染。

例如缓存,你不需要在视图转变中不停的更新,你只需要等到转换完成再去更新视图。

讨论如果你想要在转变过程中改变视图的外貌。

举个例子,文件从一个视图到另一个视图,然後使用一个UIView子类的容器视图,如下:1.Beginananimationblock.2.Setthetransitiononthecontainerview.3.Removethesubviewfromthecontainerview.4.Addthenewsubviewtothecontainerview.5.Committheanimationblock.1.开始一个动画块。

2.在容器视图中设置转换。

3.在容器视图中移除子视图。

4.在容器视图中添加子视图。

5.结束动画块。

setAnimationWillStartSelector:当动画开始时发送一条消息到动画代理(void)setAnimationWillStartSelector:(SEL)selector参数selector在动画开始前向动画代理发送消息。

默认值是NULL。

这个selector必须由和beginAnimations:context:方法相同的参数,一个任选的程序标识和内容。

这些参数都可以是nil。

讨论这个方法在动画块外没有任何作用。

使用beginAnimations:context:类方法来开始一个动画块并用commitAnimations类方法来结束。

作者给您推荐的内容
  1. 个人支付宝api接口我们应该怎么弄呢,今天我们就来说说。01、首先我们要找到的一定是支付宝官网,不然你的隐秘信息可能会泄露。然后登录或者注册支付宝账号。02、在管理中心页面选择...

  2. 电脑自动关机怎么设置win7有些用户看到他们最喜欢的视频,所以他们想下载,但有些用户白天使用计算机。如果下载占用了网络速度,他们希望在晚上下载。但如果认为电脑会一直开着...

  3. 当您关闭win7计算机时,系统会经常提醒您等待程序关闭。事实上,Win7如何减少关闭电脑等待时间你发现你已经关闭了你能做的一切。这是由于win7的设置,这将延长计算机关机时间,大大推迟下班...

  4. 01、首先,点击进入你想要查看的那个人的qq空间。02、然后你就可以在右上角看到你和他的亲密度啦。03、接着还可以点击那...

  5. lol怎么OB观看别人比赛?下面就这个话题跟大家一起来说一下吧。01、首先我想说的是你登录搜狗搜索,然后输入虎牙直播。如下图。02、进入之后找到英雄联盟这一个板块。如下图。03、然后你...

  6. win7sp1补丁包许多用户问编辑器是否有win7 sp1 x86安装教程?一些编辑的朋友还询问了编辑器win7 sp1 x86安装教程。他们有一个共同的特点,他们害怕不安装,所以win7升级sp1...

  7. 十六进制的范围包括0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F,其中A-F分别表示十进制数字10-15,逢十六进一,下面介绍下Excel中利用函数HEX2DEC将十六进制转换成十进制01、打开一张工作表,输...

  8. I76700K性能I7-7700k/gtx1080ti顶级计算机配置推荐2017顶级热配置I7-7700k/gtx1080ti顶级计算机配置推荐2017顶级热配置I7-7700ki73770K还要1200块...

  9. 小编给大家介绍的是ps中如何裁剪图片大小为精确尺寸,希望对大家有所帮助。01、首先,我们在电脑桌面的图标中找到并且点击打开ps软件。02、然后,我们在相关页面点击左上角的文件,并且打开...

  10. Air是Adobe公司生产的跨操作系卸载AdobeAIR时出错的解决方案统运行库。通过它,开发人员可以使用现有的web开发技术(flash、flex、HTML、JavaScript、AJAX)来构建富Internet应用程序并将其部署为桌面应用...