激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務(wù)器之家 - 編程語言 - IOS - iOS 控制器自定義動畫跳轉(zhuǎn)方法(模態(tài)跳轉(zhuǎn))

iOS 控制器自定義動畫跳轉(zhuǎn)方法(模態(tài)跳轉(zhuǎn))

2021-04-14 15:41iMazy IOS

下面小編就為大家分享一篇iOS 控制器自定義動畫跳轉(zhuǎn)方法(模態(tài)跳轉(zhuǎn)),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

參考資料:

Apple 開發(fā)文檔 Customizing the Transition Animations

WWDC 2013 Custom Transitions Using View Controllers

圖例:

跳轉(zhuǎn)的動畫有很多,全部可以自定義

iOS 控制器自定義動畫跳轉(zhuǎn)方法(模態(tài)跳轉(zhuǎn))

創(chuàng)建自定義跳轉(zhuǎn)必須遵循的三個步驟:

1、創(chuàng)建一個類,并實現(xiàn)了 UIViewControllerAnimatedTransitioning 協(xié)議

2、創(chuàng)建一個類作為 UIViewControllerTransitioningDelegate 過渡代理

3、在模態(tài)跳轉(zhuǎn)前修改控制器的 transitioningDelegate 代理為自定義的代理(步驟2的代理類)

核心代碼示例

一、創(chuàng)建一個類,并實現(xiàn)了 UIViewControllerAnimatedTransitioning 協(xié)議

這個協(xié)議主要控制控制器視圖的顯示的,通過 transitionContext 可以獲取到每個視圖和控制器,并進行動畫的設(shè)置

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
class AnimatedTransitioning: NSObject {
 var isPresenting: Bool = false
}
extension AnimatedTransitioning: UIViewControllerAnimatedTransitioning {
 func transitionDuration(using transitionContext: UIViewControllerContextTransitioning?) -> TimeInterval {
 return 0.5
 }
 func animateTransition(using transitionContext: UIViewControllerContextTransitioning) {
 let fromView = transitionContext.view(forKey: .from)!
 let toView = transitionContext.view(forKey: .to)!
 let containerView = transitionContext.containerView
 if isPresenting {
  toView.transform = CGAffineTransform(scaleX: 0, y: 0)
  containerView.addSubview(toView)
 } else {
  containerView.insertSubview(toView, belowSubview: fromView)
 }
 UIView.animate(withDuration: 0.5, animations: {
  if self.isPresenting {
  toView.transform = CGAffineTransform.identity
  } else {
  fromView.transform = CGAffineTransform(scaleX: 0.001, y: 0.001)
  }
 }) { (finished) in
  transitionContext.completeTransition(finished)
 }
 }
}

二、創(chuàng)建一個類作為 UIViewControllerTransitioningDelegate 過渡代理

這里設(shè)置 presented 和 dismissed 時各自的動畫轉(zhuǎn)換類,可以設(shè)置為不同的類

?
1
2
3
4
5
6
7
8
9
10
11
12
class CustomTransitioningDelegate: NSObject, UIViewControllerTransitioningDelegate {
 func animationController(forPresented presented: UIViewController, presenting: UIViewController, source: UIViewController) -> UIViewControllerAnimatedTransitioning? {
 let at = AnimatedTransitioning()
 at.isPresenting = true
 return at
 }
 func animationController(forDismissed dismissed: UIViewController) -> UIViewControllerAnimatedTransitioning? {
 let at = AnimatedTransitioning()
 at.isPresenting = false
 return at
 }
}

三、在模態(tài)跳轉(zhuǎn)前修改控制器的 transitioningDelegate 代理為自定義的代理

注意:代理不能為局部變量

?
1
2
3
4
5
6
7
8
9
class ViewController: UIViewController {
 // 必須保存為實例變量
 var ctDelegate = CustomTransitioningDelegate()
 override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
 let vc = TempViewController()
 vc.transitioningDelegate = ctDelegate
 self.present(vc, animated: true, completion: nil)
 }
}

以上這篇iOS 控制器自定義動畫跳轉(zhuǎn)方法(模態(tài)跳轉(zhuǎn))就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持服務(wù)器之家。

原文鏈接:http://blog.csdn.net/Mazy_ma/article/details/78969264

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 亚洲成人精品久久久 | 日日草夜夜 | 精品久久久久久久久中文字幕 | 成人一级黄色大片 | 97精品国产高清在线看入口 | 最新av在线免费观看 | 欧美一级黄色免费 | 欧美一级α | 欧美激情精品久久久久久久久久 | 九九视频久久 | 嗯啊羞羞视频 | 国产精品免费小视频 | 久久人人av | 亚洲成人免费影视 | 国产成人高清成人av片在线看 | 久草视频2 | 最新在线中文字幕 | 羞羞的网站 | 美国人成人在线视频 | 亚洲一区二区三区91 | 成人免费福利网站 | 特片网久久 | 亚洲日韩精品欧美一区二区 | 一级黄色在线免费观看 | 国产亚洲精品久久久久久久 | 欧美精品一区二区三区久久久 | 午夜视频亚洲 | 日韩精品中文字幕在线观看 | 一级一级一级毛片 | 九九热精品在线 | 91色爱| 日韩欧美精品中文字幕 | 精品国产一区二区三区蜜殿 | 午夜神马电影网 | 91成人免费视频 | 色999中文字幕 | 国产超碰人人做人人爱 | 成人福利视频在线观看 | 羞羞网站视频 | 99爱视频| 国产一级在线免费观看 |