Experimental Implementations of UIViewControllerAnimatedTransitioning.
- Objective-C ARC
- iOS 7 or above
pod 'KWTransition'
###Manual
You can manually install this library by copying the KWTransition.h
and KWTransition.m
into your project.
-
Import the header.
#import <KWTransition.h>
-
Implement delegate transitioning delegate on the initial view controller (the one doing the presenting).
<UIViewControllerTransitioningDelegate>
-
Implement a transition manager property on the initial view controller.
@property (nonatomic, strong) KWTransition *transition;
Be sure to initialise the manager somewhere.
_transition = [KWTransition manager];
-
Set the controller to use custom presentations
[self setModalPresentationStyle: UIModalPresentationCustom];
-
Implement the transitioning delegate
#pragma mark - UIVieControllerTransitioningDelegate - (id <UIViewControllerAnimatedTransitioning>)animationControllerForPresentedController:(UIViewController *)presented presentingController:(UIViewController *)presenting sourceController:(UIViewController *)source { self.transition.action = KWTransitionStepPresent; return self.transition; } -(id<UIViewControllerAnimatedTransitioning>)animationControllerForDismissedController:(UIViewController *)dismissed { self.transition.action = KWTransitionStepDismiss; return self.transition; }
-
Select your animation and present!
self.transition.style = KWTransitionStyleFadeBackOver; KWModalViewController *VC = [[KWModalViewController alloc] init]; VC.transitioningDelegate = self; [self presentViewController:VC animated:YES completion:nil];
##Styles
All styles support the KWTransitionSettingReverse
setting.
####KWTransitionFadeBackOver
####KWTransitionRotateFromTop
####KWTransitionStyleUp
####KWTransitionStylePushUp
####KWTransitionStyleFall
####KWTransitionStyleStepBackScroll
####KWTransitionStyleBounceIn
####KWTransitionStyleDropOut
####KWTransitionStyleStepBackSwipe
####KWTransitionStyleSink
Supports: KWTransitionSettingDirectionRight
, KWTransitionSettingDirectionLeft
, KWTransitionSettingDirectionDown
, KWTransitionSettingDirectionUp
and KWTransitionSettingReverse
.
Sample is using: KWTransitionSettingDirectionDown
You can manipulate the way some transitions behave by setting the manager's settings
property. e.g,
manager.style = KWTransitionStyleSink;
manager.settings = KWTransitionSettingDirectionUp | KWTransitionSettingDirectionRight | KWTransitionSettingReverse;
Would result in the transition operating against the top right corner performing the present and dismiss in reverse animation.
Below are the available settings. As not all styles support or settings (yet), please refer to the style documentation found at the start of this document for specific style support.
typedef NS_OPTIONS(NSUInteger, KWTransitionSetting){
KWTransitionSettingNone = 0,
KWTransitionSettingDirectionRight = 1 << 0,
KWTransitionSettingDirectionLeft = 1 << 1,
KWTransitionSettingDirectionDown = 1 << 2,
KWTransitionSettingDirectionUp = 1 << 3,
KWTransitionSettingReverse = 1 << 5
};
All contributions are welcome! Please feel free to improve existing or submit your own transitions.
The MIT License (MIT)
Copyright (c) 2014 Kurt Wagner
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.