iOS动画立方体翻转特效的形成
来源:爱站网时间:2020-11-27编辑:网友分享
我们在iOS系统开发的时候经常会使用到很多动画效果,那么你知道怎么实现iOS动画立方体翻转特效吗?下面我们就跟爱站小编一起去了解了解iOS动画立方体翻转特效的形成吧。
我们在iOS系统开发的时候经常会使用到很多动画效果,那么你知道怎么实现iOS动画立方体翻转特效吗?下面我们就跟爱站小编一起去了解了解iOS动画立方体翻转特效的形成吧。
先来看看效果:
下面进入正题,是时候展现真正的技术了:
首先在控制器里添加一个scrollView,再在scrollView上的对应位置上添加要展示的imageView(立方体视图组),当然也可以放上其它子控制器的view实现更多功能这个随意不是重点
//*******添加scrollView******* [self createScrollView]; //******创建立方体视图组****** [self createCubicViewArray];
//添加视图到scrollView上 for (int i=0; i<_viewarray.count i uiimageview transview.x="self.view.bounds.size.width">
监听scrollView的滑动事件,在这里要先获取到显示的当前页、上一页、下一页,然后让这三个页面同时做3DTransform变换
#pragma mark - scrollView滑动事件 -(void)scrollViewDidScroll:(UIScrollView *)scrollView{ //当前页数 NSInteger currentPage=_currentPage; //当前视图 UIView *currentView=_viewArray[currentPage]; //上一个视图 UIView *lastView=nil; if (currentPage-1>=0) { lastView=_viewArray[currentPage-1]; } //下一个视图控制器视图 UIView *nextView; if (currentPage+1
这里记得要复原一下3D变换,不然滑快了会出现页面错乱
-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView{ //改变选中页序号 [self changeIndex]; //3D变幻恢复原状态 for (UIView * view in _viewArray) { view.layer.transform=CATransform3DIdentity; } }
对了,记得添加一个很重要的透视变换函数,核心在于仿射矩阵的m34属性,这样才会产生远小近大的3D效果,让动画更炫酷
//3D透视函数 CATransform3D CATransform3DMakePerspective(CGPoint center, float disZ) { CATransform3D transToCenter = CATransform3DMakeTranslation(-center.x, -center.y, 0); CATransform3D transBack = CATransform3DMakeTranslation(center.x, center.y, 0); CATransform3D scale = CATransform3DIdentity; scale.m34 = -1.0f/disZ; return CATransform3DConcat(CATransform3DConcat(transToCenter, scale), transBack); }
这一篇关于iOS动画立方体翻转特效的形成文章就到这里了,大家有什么意见和问题记得及时反馈,希望本文对大家开发IOS有所帮助。
下一篇:iOS开发不用宏来定义常量的介绍