ios8中 利用UIPresentationController 自定义转场

1、UIPresentationController 介绍

UIPresentationController 是 iOS8 新增的一个 API,用来控制 controller 之间的跳转特效。比如希望实现一个特效,显示一个窗口,大小和位置都是自定义的,并且遮罩在原来的页面上。在之前,可以操作view的一些方法来实现。

2、使用介绍

1. 设置目标控制器的 转场代理 和 展示方法

controller.modalPresentationStyle = UIModalPresentationStyle.Custom	// 设置 动画样式
controller.transitioningDelegate = transtinoDelegate	// 此对象要实现 UIViewControllerTransitioningDelegate 协议

2. transtionDelegate 实现 UIViewControllerTransitioningDelegate 协议方法

// 返回控制控制器弹出动画的对象
optional func animationControllerForPresentedController(presented: UIViewController, presentingController presenting: UIViewController, sourceController source: UIViewController) -> UIViewControllerAnimatedTransitioning?
	
// 返回控制控制器消失动画的对象
optional func animationControllerForDismissedController(dismissed: UIViewController) -> UIViewControllerAnimatedTransitioning?
	
@availability(iOS, introduced=8.0)
// 返回控制控制器跳转的对象
optional func presentationControllerForPresentedViewController(presented: UIViewController, presentingViewController presenting: UIViewController!, sourceViewController source: UIViewController) -> UIPresentationController?

3. 控制控制器跳转的类

控制控制器跳转的类继承自 UIPresentationController 

/*
	构造方法:
	参数:	presentedViewController		将要跳转到的目标控制器
		presentingViewController	跳转前的原控制器
*/
init(presentedViewController: UIViewController!, presentingViewController: UIViewController!)

常用的属性和方法
presentedViewController:				要 modal 显示的视图控制器
presentingViewController:				低层的视图控制器
containerView()						容器视图
presentedView()						被展现的视图
func presentationTransitionWillBegin()			跳转将要开始
func presentationTransitionDidEnd(completed: Bool)	跳转完成
func dismissalTransitionWillBegin()			dismiss 将要开始
func dismissalTransitionDidEnd(completed: Bool)		dismiss 完成
func frameOfPresentedViewInContainerView()		目标 控制器设置

4. 控制动画类

控制动画对类继承自 UIViewControllerAnimatedTransitioning

// 执行动画的时间
func transitionDuration(transitionContext: UIViewControllerContextTransitioning) -> NSTimeInterval
// 动画过程设置
func animateTransition(transitionContext: UIViewControllerContextTransitioning)

5. 总结

1. 设置目标控制器的转场代理

2. 专场代理返回三个对象用于控制转场过程

3. 控制控制器转场对象,可以在此做专场前后的操作,例如添加遮罩等

4. 控制转场动画,用于设置目标控制器出现或消失的动画,以及控制器的大小样式等。

3. API 详细介绍

稍后。。。

4.自定义跳转 Demo

稍后。。。


郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。