IOS开发系列

您所在的位置:网站首页 ios动画开发 IOS开发系列

IOS开发系列

2024-07-08 23:01| 来源: 网络整理| 查看: 265

2UIView动画 2.1概述

UIView视图的动画功能,可以使在更新或切换视图时有放缓节奏、产生流畅的动画效果,进而改善用户体验。UIView可以产生动画效果的变化包括:

•位置变化:在屏幕上移动视图。

•大小变化:改变视图框架(frame)和边界。

•拉伸变化:改变视图内容的延展区域。

•改变透明度:改变视图的alpha值。

•改变状态:隐藏或显示状态。

•改变视图层次顺序:视图哪个前哪个后。

•旋转:即任何应用到视图上的仿射变换(transform)。

UIKit直接将动画集成到UIView类中,实现简单动画的创建过程。UIView类定义了几个内在支持动画的属性声明,当这些属性发生改变时,视图为其变化过程提供内建的动画支持。

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

2.2UIView动画简单创建方法

- (void)buttonPressed

{

//交换本视图控制器中2个view位置

[self.viewexchangeSubviewAtIndex:0 withSubviewAtIndex:1];

//UIView开始动画,第一个参数是动画的标识,第二个参数附加的应用程序信息用来传递给动画代理消息

[UIViewbeginAnimations:@"View Flip" context:nil];

//动画持续时间

[UIViewsetAnimationDuration:1.25];

//设置动画的回调函数,设置后可以使用回调方法

[UIViewsetAnimationDelegate:self];

//设置动画曲线,控制动画速度

[UIView setAnimationCurve: UIViewAnimationCurveEaseInOut];

//设置动画方式,并指出动画发生的位置

[UIViewsetAnimationTransition:UIViewAnimationTransitionCurlUp forView:self.view cache:YES];

//提交UIView动画

[UIViewcommitAnimations];

}

- (void)viewDidLoad

{

[super viewDidLoad];

//主要功能通过UIView动画完成2个试图控制器的切换

self.blueController =[[BlueViewController alloc] initWithNibName:nil bundle:nil];

//设置导航控制器view的大小占整个屏幕

[self.blueController.view setFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)];

self.yellowController =[[YellowController alloc]initWithNibName:nil bundle:nil ];

[self.yellowController.view setFrame:CGRectMake(0, 0,self.view.frame.size.width , self.view.frame.size.height)];

//将2个控制器view插入到目前导航控制器视图上,yellowController后插入,显示在最前面

[self.viewinsertSubview:self.blueController.view atIndex:0];

[self.viewinsertSubview:self.yellowController.view atIndex:1];

//创建导航控制器右按钮,按钮名字叫next

//添加buttonPressed事件

self.rightBarItem =[[UIBarButtonItem alloc] initWithTitle:@"next" style:UIBarButtonItemStylePlaintarget:self action:@selector(buttonPressed)];

//将按钮添加到导航控制器默认右按钮上

self.navigationItem.rightBarButtonItem = self.rightBarItem;

}

有个问题:如果动画不放在按钮事件中,直接放到viewDidLoad里,程序首先执行这个controller,这时动画是不会显示的。

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

解决方案:

1、将动画写在按钮事件中

2、利用定时器。

转:UIView动画更具体讲解;http://wsqwsq000.iteye.com/blog/1189183

2.3创建UIView动画(块)——(指过渡效果的动画) 2.3.1一.基本方式:使用UIView类的UIViewAnimation扩展

UIView动画是成块运行的。发出beginAnimations:context:请求标志着动画块的开始;commitAnimations标志着动画块的结束。把这两个类方法发送给UIView而不是发送给单独的视图。在这两个调用之间的可定义动画的展现方式并更新视图。函数说明:

//开始准备动画

+ (void)beginAnimations:(NSString *)animationID context:(void*)context;

//运行动画

+ (void)commitAnimations;

具体二段动画代码:

[UIView beginAnimations:nil context:nil];

//setAnimationCurve来定义动画加速或减速方式

[UIView setAnimaitonCurve:UIViewAnimationCurveLinear];

[UIView setAnimationDuration:2.7];//动画时长

[UIView setAnimationTransition:transitionforView:self.view cache:YES];

// operation>>>

[self.view exchangeSubviewAtIndex:0withSubviewAtIndex:1];

// end



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3