PresentModel UIViewController 的动画方式

来源:互联网 发布:c#连接mysql命令 编辑:程序博客网 时间:2024/04/26 07:33

添加分类:

#import <UIKit/UIKit.h>@interface UIViewController (Transitions)- (void) presentModalViewController:(UIViewController *)modalViewController withPushDirection: (NSString *) direction;- (void) dismissModalViewControllerWithPushDirection:(NSString *) direction;@end


实现:

#import "UIViewController+Transitions.h"@implementation UIViewController (Transitions)- (void) presentModalViewController:(UIViewController *)modalViewController withPushDirection: (NSString *) direction {        [CATransaction begin];        CATransition *transition = [CATransition animation];    transition.type = kCATransitionPush;    transition.subtype = direction;    transition.duration = 0.25f;    transition.fillMode = kCAFillModeForwards;    transition.removedOnCompletion = YES;        [[UIApplication sharedApplication].keyWindow.layer addAnimation:transition forKey:@"transition"];    [[UIApplication sharedApplication] beginIgnoringInteractionEvents];    [CATransaction setCompletionBlock: ^ {        dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(transition.duration * NSEC_PER_SEC)), dispatch_get_main_queue(), ^ {            [[UIApplication sharedApplication] endIgnoringInteractionEvents];        });    }];        [self presentModalViewController:modalViewController animated:NO];        [CATransaction commit];    }- (void) dismissModalViewControllerWithPushDirection:(NSString *) direction {        [CATransaction begin];        CATransition *transition = [CATransition animation];    transition.type = kCATransitionPush;    transition.subtype = direction;    transition.duration = 0.25f;    transition.fillMode = kCAFillModeForwards;    transition.removedOnCompletion = YES;        [[UIApplication sharedApplication].keyWindow.layer addAnimation:transition forKey:@"transition"];    [[UIApplication sharedApplication] beginIgnoringInteractionEvents];    [CATransaction setCompletionBlock: ^ {        dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(transition.duration * NSEC_PER_SEC)), dispatch_get_main_queue(), ^ {            [[UIApplication sharedApplication] endIgnoringInteractionEvents];        });    }];        [self dismissModalViewControllerAnimated:NO];        [CATransaction commit];    }@end


原创粉丝点击