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 详细介绍

1、UIViewControllerTransitioningDelegate

protocol UIViewControllerTransitioningDelegate : NSObjectProtocol {
	
// 返回控制控制器消失动画的对象
optional func animationControllerForPresentedController(presented: UIViewController, presentingController presenting: UIViewController, sourceController source: UIViewController) -> UIViewControllerAnimatedTransitioning?
	
// 返回控制控制器跳转的对象
optional func animationControllerForDismissedController(dismissed: UIViewController) -> UIViewControllerAnimatedTransitioning?

optional func interactionControllerForPresentation(animator: UIViewControllerAnimatedTransitioning) -> UIViewControllerInteractiveTransitioning?
	
optional func interactionControllerForDismissal(animator: UIViewControllerAnimatedTransitioning) -> UIViewControllerInteractiveTransitioning?
	
@availability(iOS, introduced=8.0)
// 返回控制控制器弹出动画的对象
optional func presentationControllerForPresentedViewController(presented: UIViewController, presentingViewController presenting: UIViewController!, sourceViewController source: UIViewController) -> UIPresentationController?
}

2、UIPresentationController




4.自定义跳转 Demo

稍后。。。


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值