參考資料:
創(chuàng)新互聯(lián)建站是一家專注于網(wǎng)站設計、網(wǎng)站制作與策劃設計,鄒平網(wǎng)站建設哪家好?創(chuàng)新互聯(lián)建站做網(wǎng)站,專注于網(wǎng)站建設十年,網(wǎng)設計領域的專業(yè)建站公司;建站業(yè)務涵蓋:鄒平等地區(qū)。鄒平做網(wǎng)站價格咨詢:18980820575Apple 開發(fā)文檔 Customizing the Transition Animations
WWDC 2013 Custom Transitions Using View Controllers
圖例:
跳轉的動畫有很多,全部可以自定義
創(chuàng)建自定義跳轉必須遵循的三個步驟:
1、創(chuàng)建一個類,并實現(xiàn)了 UIViewControllerAnimatedTransitioning 協(xié)議
2、創(chuàng)建一個類作為 UIViewControllerTransitioningDelegate 過渡代理
3、在模態(tài)跳轉前修改控制器的 transitioningDelegate 代理為自定義的代理(步驟2的代理類)
核心代碼示例
一、創(chuàng)建一個類,并實現(xiàn)了 UIViewControllerAnimatedTransitioning 協(xié)議
這個協(xié)議主要控制控制器視圖的顯示的,通過 transitionContext 可以獲取到每個視圖和控制器,并進行動畫的設置
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)新互聯(lián)建站www.cdcxhl.com,海內(nèi)外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。