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动画中的雨花与樱花特效

下一篇:iOS开发不用宏来定义常量的介绍

您可能感兴趣的文章

相关阅读

热门软件源码

最新软件源码下载