WWDC2013_218 内容概要 ( 2 )

来源:互联网 发布:好听的淘宝店名 编辑:程序博客网 时间:2024/05/12 12:22

WWDC2013_218 —— 

Custom Transitions Using View Controllers ( 2 )


官方视频地址:https://developer.apple.com/wwdc/videos/

此文为自己总结的官方视频的内容概要,正在学习ing...


Custom view controller transitions

1. Presentations and dismissals

Supported presentation styles

UIModalPresentationFullScreen

UIModalPresentationCustom(Thenew modal presentation type)

TIPS:

The from view controller is not removed from the window hierarchy ( * to which)

UIViewController *vc = ...;

  id <UIViewControllerTransitioningDelegate> transitioningDelegate;

  vc.modalPresentationStyle = UIModalPresentationCustom;

  [vc setTransitioningDelegate: transitioningDelegate];

[self presentViewController:vc animated: YES completion: nil];


2. UITabBarController 

Nothing to change

setSelectedViewController:(UIViewController *)vc;

setSelectedIndex:(NSUInteger)idx;

3. UINavigationController

• Nothing to change

 pushViewController:animated:

  popViewControllerAnimated:

  setViewControllers:animated:

4. UICollectionViewController layout-to-layout transitions

• Layout-to-layout navigation transitions

UICollectionViewLayout *layout1,*layout2,*layout3;

UICollectionViewController *cvc1, *cvc2, *cvc3;

cvc1 = [cvc1 initWithCollectionViewLayout:layout1];

...

/* Basically all you need to do is set that one property to yes, and push your view controllers.And all of the view controllers that you push or pop will actually be transitioning, using set collection view layout.*/

[nav pushViewController:cvc1 animated:YES]

cvc2.useLayoutToLayoutNavigationTransitions = YES;

cvc3.useLayoutToLayoutNavigationTransitions = YES;

[nav pushViewController:cvc2 animated:YES];

[nav pushViewController:cvc3 animated:YES];

[nav popViewControllerAnimated:YES];


5. The anatomy of a transition

• Start state

     ■ Consistent view controller hierarchy and view hierarchy

• User or programmatic transition commences

• Internal structures are updated, callbacks made, etc.

• Container view, and start and final view positions are computed 

• Optional animation to end state view hierarchy is run

• Animation completes

     ■ Internal structures are updated, callbacks made, etc. • End State

     ■ Consistent view controller hierarchy and view hierarchy


6. Wiring it all together

• Animation and interaction controllers are vended by delegates

  <UIViewControllerTransitioningDelegate>

https://developer.apple.com/library/ios/documentation/uikit/reference/UIViewControllerTransitioningDelegate_protocol/Reference/Reference.html

 <UINavigationControllerDelegate>

http://developer.apple.com/library/ios/#documentation/UIKit/Reference/UINavigationControllerDelegate_Protocol/Reference/Reference.html

  <UITabBarControllerDelegate>

http://developer.apple.com/library/ios/documentation/uikit/reference/UITabBarControllerDelegate_Protocol/


• Animation controllers conform to a protocol

  <UIViewControllerAnimatedTransitioning>

https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIViewControllerAnimatedTransitioning_Protocol/Reference/Reference.html


• Interaction controllers conform to a protocol

  <UIViewControllerInteractiveTransitioning>

https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIViewControllerInteractiveTransitioning_protocol/Reference/Reference.html


• A system object passed to the controllers conforms to

  <UIViewControllerContextTransitioning>

https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIViewControllerContextTransitioning_protocol/Reference/Reference.html