亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > iOS > 正文

iOS動畫特效之立方體翻轉

2020-07-26 03:17:29
字體:
來源:轉載
供稿:網友

先來看看效果:

下面進入正題,是時候展現真正的技術了:

首先在控制器里添加一個scrollView,再在scrollView上的對應位置上添加要展示的imageView(立方體視圖組),當然也可以放上其它子控制器的view實現更多功能這個隨意不是重點

//*******添加scrollView*******  [self createScrollView];//******創建立方體視圖組******  [self createCubicViewArray];
//添加視圖到scrollView上  for (int i=0; i<_viewArray.count; i++) {    UIImageView *transView=_viewArray[i];    //視圖在scrollView上對應的位置    transView.x=self.view.bounds.size.width * i;

監聽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<=3) {    nextView=_viewArray[currentPage+1];  }  //本次偏移距離  CGFloat currentOffset=scrollView.contentOffset.x-currentPage*self.view.bounds.size.width;  //本次偏移角度  CGFloat deltaAngle=currentOffset/self.view.bounds.size.width * M_PI_2;  //****************當前視圖移動變幻***************  //設置錨點  currentView.layer.anchorPoint=CGPointMake(0.5, 0.5);  //向屏幕前方移動  CATransform3D move = CATransform3DMakeTranslation(0, 0, self.view.bounds.size.width/2);  //旋轉  CATransform3D rotate = CATransform3DMakeRotation(-deltaAngle, 0, 1, 0);  //平移  CATransform3D plaintMove=CATransform3DMakeTranslation( currentOffset, 0, 0);  //向屏幕后方移動  CATransform3D back = CATransform3DMakeTranslation(0, 0, -self.view.bounds.size.width/2);  //連接  CATransform3D concat=CATransform3DConcat( CATransform3DConcat(move, CATransform3DConcat(rotate, plaintMove)),back);  CATransform3D transform=CATransform3DPerspect(concat, CGPointMake(currentOffset/2, self.view.bounds.size.height), 5000.0f);  //添加變幻特效  currentView.layer.transform=transform;  //****************下一個視圖移動變幻***************  //設置錨點  nextView.layer.anchorPoint=CGPointMake(0.5, 0.5);  //向屏幕前方移動  CATransform3D move2 = CATransform3DMakeTranslation(0, 0, self.view.bounds.size.width/2);  //旋轉  CATransform3D rotate2 = CATransform3DMakeRotation(-deltaAngle+M_PI_2, 0, 1, 0);  //平移  CATransform3D plaintMove2=CATransform3DMakeTranslation( currentOffset-self.view.bounds.size.width, 0, 0);  //向屏幕后方移動  CATransform3D back2 = CATransform3DMakeTranslation(0, 0, -self.view.bounds.size.width/2);  //拼接  CATransform3D concat2=CATransform3DConcat( CATransform3DConcat(move2, CATransform3DConcat(rotate2, plaintMove2)),back2);  CATransform3D transform2=CATransform3DPerspect(concat2, CGPointMake(self.view.bounds.size.width/2+currentOffset/2, self.view.bounds.size.height), 5000.0f);  //添加變幻特效  nextView.layer.transform=transform2;  //****************上一個視圖移動變幻***************  //設置錨點  lastView.layer.anchorPoint=CGPointMake(0.5, 0.5);  //向屏幕前方移動  CATransform3D move3 = CATransform3DMakeTranslation(0, 0, self.view.bounds.size.width/2);  //旋轉  CATransform3D rotate3 = CATransform3DMakeRotation(-deltaAngle-M_PI_2, 0, 1, 0);  //平移  CATransform3D plaintMove3=CATransform3DMakeTranslation( currentOffset+self.view.bounds.size.width, 0, 0);  //向屏幕后方移動  CATransform3D back3 = CATransform3DMakeTranslation(0, 0, -self.view.bounds.size.width/2);  //拼接  CATransform3D concat3=CATransform3DConcat(CATransform3DConcat(move3, CATransform3DConcat(rotate3, plaintMove3)),back3);  CATransform3D transform3=CATransform3DPerspect(concat3, CGPointMake(-self.view.bounds.size.width/2+currentOffset/2, self.view.bounds.size.height), 5000.0f);  //添加變幻特效  lastView.layer.transform=transform3;}

這里記得要復原一下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有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美日韩免费网站| 亚洲九九九在线观看| 成人444kkkk在线观看| 性视频1819p久久| 亚洲二区在线播放视频| 日韩国产欧美区| 亚洲成人av在线播放| 亚洲伊人久久大香线蕉av| 91久久久久久久久久久| 国产精品高精视频免费| 欧美激情在线观看视频| 国产精品18久久久久久麻辣| 68精品国产免费久久久久久婷婷| 国产精品入口免费视频一| 91九色视频导航| 国产亚洲欧美日韩美女| 久久精品最新地址| 亚洲片在线资源| 亚洲一区二区在线| 日韩一区二区久久久| 欧美黄色免费网站| 国产精品91在线| 亚洲人成在线免费观看| 久久人人爽人人爽人人片亚洲| 亚洲男人天堂网站| 亚洲成人激情小说| 久久久在线观看| 久久精品人人做人人爽| 日韩精品久久久久久久玫瑰园| 成人网中文字幕| 欧美高清激情视频| 日韩中文字幕精品视频| 日本高清不卡在线| 午夜剧场成人观在线视频免费观看| 一区二区三区在线播放欧美| 久久伊人精品一区二区三区| 亚洲伊人第一页| 日韩欧美国产中文字幕| 大荫蒂欧美视频另类xxxx| 日韩精品中文字幕久久臀| 日韩视频―中文字幕| 欧美日韩免费观看中文| 亚洲四色影视在线观看| 国产成人精品在线观看| 欧美日韩激情视频8区| 神马国产精品影院av| 久久天天躁狠狠躁夜夜躁| 色多多国产成人永久免费网站| 日韩激情视频在线播放| 久久精品亚洲国产| 成人黄色免费网站在线观看| 久久久久久久久爱| 欧洲一区二区视频| 亚洲qvod图片区电影| 欧美日韩一区二区三区在线免费观看| 成人免费视频xnxx.com| 成人网页在线免费观看| 91精品国产成人www| 国产精品成人国产乱一区| 日韩大胆人体377p| 这里只有精品视频| 国产精品久久一区主播| 精品国内产的精品视频在线观看| 美女视频久久黄| 国产精品高清免费在线观看| 欧美一级片在线播放| 秋霞av国产精品一区| 91视频国产一区| 久久韩国免费视频| 欧美日韩性视频| 欧美日韩性生活视频| 中文字幕在线观看亚洲| 成人www视频在线观看| 精品久久久久久久久中文字幕| 国产精品久久久久久久久男| 韩剧1988免费观看全集| 国产精品免费看久久久香蕉| www.欧美免费| 久久久久久久一区二区| 日本精品一区二区三区在线播放视频| 国产精品久久久久久婷婷天堂| 热久久这里只有精品| 国产伦精品一区二区三区精品视频| 日韩在线视频导航| 亚洲a区在线视频| 日韩av最新在线观看| 久久久人成影片一区二区三区观看| 久久精品久久久久久国产 免费| 美女久久久久久久久久久| 777国产偷窥盗摄精品视频| 人妖精品videosex性欧美| 亚洲欧美激情视频| 日韩av在线最新| 欧美性猛交丰臀xxxxx网站| 国产精品久久久久免费a∨大胸| 日本欧美黄网站| 岛国av在线不卡| 欧美黄色三级网站| 亚洲国产成人精品一区二区| 日韩电影免费在线观看| 国产精品入口免费视频一| 亚洲自拍偷拍网址| 欧美日韩国产中文精品字幕自在自线| 久久久久国色av免费观看性色| 隔壁老王国产在线精品| 欧美视频在线免费| 久久久精品国产| 午夜精品久久久久久久白皮肤| 国产精品天天狠天天看| 午夜欧美不卡精品aaaaa| 精品国产一区二区三区久久| 精品久久久在线观看| 亚洲毛茸茸少妇高潮呻吟| 国产自摸综合网| 久久九九有精品国产23| 少妇高潮久久久久久潘金莲| 精品欧美aⅴ在线网站| 国产91精品高潮白浆喷水| 久久精品国产亚洲| 日韩中文理论片| 日韩免费av在线| 欧美一级大片视频| 国产成人拍精品视频午夜网站| 成人国产在线视频| 欧美日韩国产精品一区二区三区四区| 在线看日韩av| 欧美激情手机在线视频| 欧洲美女免费图片一区| 欧美另类极品videosbestfree| 欧美精品免费看| 日韩精品在线免费观看| 欧美日韩午夜视频在线观看| 久久福利视频网| 亚洲福利在线播放| 精品一区二区三区三区| 日韩av免费在线播放| 精品一区精品二区| 欧洲精品久久久| 91高清视频免费观看| 国产精品视频yy9099| 欧美人在线视频| 91在线色戒在线| 亚洲热线99精品视频| 日韩精品在线播放| 国产日产亚洲精品| 欧美大肥婆大肥bbbbb| 国产精品青青在线观看爽香蕉| 成人久久精品视频| 欧美成年人视频网站欧美| 国产精品无码专区在线观看| 欧美精品少妇videofree| 国产精品久久久久久久午夜| 中文字幕一区二区精品| 日韩av一区二区在线观看| 日韩精品中文字幕视频在线| www.99久久热国产日韩欧美.com| 久久久久久国产精品美女| 亚洲精品国产美女| 精品日韩美女的视频高清| 91美女福利视频高清| 欧美电影在线观看完整版| 91沈先生作品| 91精品国产综合久久香蕉922| 欧美在线视频在线播放完整版免费观看|