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开发不用宏来定义常量的介绍
