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

首頁 > 系統 > iOS > 正文

iOS動畫之向右拉的抽屜3D效果

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

首先我們忽略掉3D效果,先要做的是一個右拉的抽屜效果.

總體思路:

     1.創建一個ContainerViewController容器控制器,然后把左側選擇菜單的SideMenuViewController,和右側負責顯示內容的MainViewController 添加到ContainerViewController中.

     2.給容器控制器ContainerViewController添加一個手勢監聽,通過修改偏移量完成抽屜效果.

     3.設置anchorPoint,給左側SideMenuViewController的view以及左上角的圖片按鈕添加3D效果.

如果想知道詳情請看代碼,我們這邊把核心的部分說下:

給ContainerViewController添加手勢監聽,然后在監聽方法中該去怎么處理:

 func handleGesture(recognizer: UIPanGestureRecognizer) {    let translation = recognizer.translationInView(recognizer.view!.superview!)    // (isOpening ? 1.0 : -1.0) isOpening為BOOL值,表示打開或者關閉    var progress = translation.x / menuWidth * (isOpening ? 1.0 : -1.0)    // 保證在0~1之間    progress = min(max(progress, 0), 1.0)    switch recognizer.state {    case .Began:      let isOpen = mainVC.view.frame.origin.x/menuWidth      isOpening = isOpen == 1.0 ? false:true      // 為layer的效果添加一個緩存,作用是避免旋轉的時候產生鋸齒      sideMenuVC.view.layer.shouldRasterize = true;      // 設置渲染的范圍      sideMenuVC.view.layer.rasterizationScale = UIScreen.mainScreen().scale    case .Changed:      // 核心代碼:調整容器中視圖的位置 3D效果 以及透明度 以及左上角按鈕的翻轉效果      setToPercent(isOpening ? progress: (1.0 - progress))    case .Ended: fallthrough    case .Cancelled: fallthrough    case .Failed:      // 分頁效果      var targetProgress: CGFloat      if (isOpening) {        targetProgress = progress < 0.5 ? 0.0 : 1.0      }else {        targetProgress = progress < 0.5 ? 1.0 : 0.0      }      // 設置failed狀態下的sideMenuVC的view的效果      UIView.animateWithDuration(animationTime, animations: { () -> Void in        self.setToPercent(targetProgress)        }, completion: { (_) -> Void in        // 記得關閉layer的緩存渲染        self.sideMenuVC.view.layer.shouldRasterize = false      })    default: break    }  }

setToPercent方法中的設置:

  func setToPercent(percent: CGFloat) {    // 調整mainVC.view的位置    mainVC.view.frame.origin.x = menuWidth * CGFloat(percent)    // 設置3D效果及透明度    sideMenuVC.view.layer.transform = menuTransformForPercent(percent)    sideMenuVC.view.alpha = CGFloat(max(0.2, percent))    // 左上角按鈕的翻轉設置    let mainVc = (mainVC as! UINavigationController).viewControllers.first as? MainViewController    if let menuButton = mainVc?.menuButton {      menuButton.imageView.layer.transform = buttonTransformForPercent(percent)    }  }

3D效果的核心代碼:

  // 根據百分比添加一個3D特效  func menuTransformForPercent(percent: CGFloat) -> CATransform3D {    var identify = CATransform3DIdentity    // m34負責z軸方向的translation(移動),m34= -1/D, 默認值是0, D越小透視效果越明顯,這邊的1000視情況調整的    identify.m34 = -1.0/1000    let remainingPercent = 1.0 - percent    let angle = remainingPercent * CGFloat(-M_PI_2)    // 后面3個數為 x y z    let rotationTransform = CATransform3DRotate(identify, angle, 0.0, 1.0, 0.0)    // 將值轉換成一個矩陣    let translationTransform =    CATransform3DMakeTranslation(menuWidth * percent, 0, 0)    // 將上面兩者結合起來    return CATransform3DConcat(rotationTransform,      translationTransform)  }  // 為按鈕添加一個3D效果  func buttonTransformForPercent(percent: CGFloat) -> CATransform3D {    var identity = CATransform3DIdentity    identity.m34 = -1.0/1000    let angle = percent * CGFloat(-M_PI)    let rotationTransform = CATransform3DRotate(identity, angle, 1.0, 1.0, 0.0)    return rotationTransform  }

以上就是iOS中右拉的抽屜3D效果的實現實例代碼,效果是不是很好呢,相信IOS開發的小伙伴通過上面的實例代碼一樣可以實現這個動畫哦。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩动漫免费观看电视剧高清| 成人在线一区二区| 久久91亚洲精品中文字幕| 欧美一级bbbbb性bbbb喷潮片| 久久香蕉国产线看观看网| 欧美激情网友自拍| 亚洲一品av免费观看| 久久精品视频导航| 国产精品久久97| 成人在线小视频| 日韩一区二区三区在线播放| 97精品一区二区视频在线观看| 国产视频丨精品|在线观看| 久久露脸国产精品| 亚洲欧美国产精品久久久久久久| 欧美视频国产精品| 久久久噜噜噜久久| 91中文字幕在线观看| 国产精品黄页免费高清在线观看| 国产噜噜噜噜噜久久久久久久久| 久久久999国产精品| 性色av一区二区三区红粉影视| 狠狠色香婷婷久久亚洲精品| 久久精品国产久精国产一老狼| 欧美日韩国产中文精品字幕自在自线| 欧美精品一区在线播放| 国产成人精品网站| 亚洲天堂成人在线| 国产一区二区三区视频在线观看| 亚洲曰本av电影| 久久久国产91| 日本伊人精品一区二区三区介绍| 9.1国产丝袜在线观看| 亚洲午夜女主播在线直播| 久久久av电影| 国产欧美在线播放| 亚洲第一网站男人都懂| 国产脚交av在线一区二区| 久久精品视频播放| 97成人在线视频| 亚洲香蕉在线观看| 色婷婷亚洲mv天堂mv在影片| 中文字幕v亚洲ⅴv天堂| 日本a级片电影一区二区| 欧美噜噜久久久xxx| 91久久国产综合久久91精品网站| 国产综合在线视频| 精品日本美女福利在线观看| 亚洲精品美女在线观看播放| 亚洲影院高清在线| 精品亚洲一区二区三区| 91免费看国产| 国产亚洲成av人片在线观看桃| 亚洲人精选亚洲人成在线| 国产精品国产福利国产秒拍| 国产日韩欧美91| 亚洲精品自拍偷拍| 亚洲一区二区三区香蕉| 亚洲视频日韩精品| 国产性色av一区二区| 亚洲自拍小视频免费观看| 日韩三级成人av网| 亚洲精品一二区| 91精品在线影院| 亚洲自拍偷拍第一页| 中文字幕日韩综合av| 亚洲精品丝袜日韩| 日本精品久久中文字幕佐佐木| 欧美国产精品日韩| 国产精品极品在线| 欧美性猛交xxxx免费看漫画| 国产成+人+综合+亚洲欧美丁香花| 久久精品亚洲94久久精品| 亚洲精品久久久久久久久久久久| 一本一本久久a久久精品综合小说| 欧美精品久久久久久久免费观看| 亚洲亚裔videos黑人hd| 亚洲精品视频二区| 亚洲一区二区三区香蕉| 欧美巨猛xxxx猛交黑人97人| 97视频免费在线看| 日韩av网站在线| 亚洲激情在线观看视频免费| 91精品久久久久久久久久久久久久| 国语自产精品视频在线看| 久久久久久久国产精品视频| 亚洲色图第一页| 欧美激情视频网址| 久久亚洲精品一区| 欧美日韩第一视频| 日本一欧美一欧美一亚洲视频| 国产精品夜色7777狼人| 91在线看www| 亚洲精品一区av在线播放| 一个色综合导航| 欧美一级电影在线| 中文字幕精品一区久久久久| 97国产真实伦对白精彩视频8| 国产91网红主播在线观看| 日韩电影免费在线观看| 国产精品中文字幕久久久| 日韩在线小视频| 91国产美女视频| 亚洲视频在线免费看| 日韩免费在线电影| 精品动漫一区二区三区| 91中文字幕在线| 97免费中文视频在线观看| 亚洲人成网站在线播| 亚洲欧美另类在线观看| 麻豆精品精华液| 国产精品偷伦免费视频观看的| 欧美国产日韩免费| 国产精品视频区| 亚洲欧洲黄色网| 精品一区二区三区电影| 欧美日韩另类视频| 成人有码在线视频| 欧美在线视频一区| 国产精品视频永久免费播放| 久久久久久av| 亚洲天堂av高清| 国产丝袜一区二区三区免费视频| 欧美激情精品久久久| 国产精品视频自拍| 欧美高清不卡在线| 欧美黄色片免费观看| 91精品国产高清| 国产精品香蕉国产| 2019中文字幕在线免费观看| 久久亚洲影音av资源网| 久久久久久久久久久人体| 国产成人av网址| 日本乱人伦a精品| 91av在线播放视频| 欧美国产极速在线| 日本中文字幕不卡免费| 日韩av在线免费| 色琪琪综合男人的天堂aⅴ视频| 亚洲精品丝袜日韩| 欧美特黄级在线| 色老头一区二区三区| 97精品视频在线播放| 亚洲欧美精品一区二区| 亚洲精品电影网在线观看| 97免费中文视频在线观看| 色先锋久久影院av| 国产在线拍偷自揄拍精品| 久久国产精品99国产精| 亚洲美腿欧美激情另类| 久久久久亚洲精品| 57pao国产精品一区| 欧美精品一区二区三区国产精品| 日韩在线视频播放| 91精品国产自产在线| 亚洲片在线资源| 国产精品极品尤物在线观看| 亚洲欧美自拍一区| 91九色国产视频| 欧美精品videosex性欧美| 尤物yw午夜国产精品视频明星| 色偷偷av一区二区三区乱| 欧美午夜女人视频在线| 亚洲视频欧美视频|