IOS9开始如何处理转屏

来源:互联网 发布:网络创世纪 编辑:程序博客网 时间:2024/06/05 11:33

【问题】

使用IOS9之前的SDK,转屏会有几个函数会被响应。

1.转屏前回调函数

- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)durationNS_DEPRECATED_IOS(3_0,8_0,"Implement viewWillTransitionToSize:withTransitionCoordinator: instead")__TVOS_PROHIBITED;

2.转屏后回调函数

- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientationNS_DEPRECATED_IOS(2_0,8_0)__TVOS_PROHIBITED;

可是在IOS9的SDK中不能再使用了,那我们该如何处理呢?

【分析】

根据帮助文档的信息,让我们改用下面这个函数

- (void)viewWillTransitionToSize:(CGSize)size
       withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator;

可是怎么区分转屏前后呢?

我们看到第二个参数coordinator,它的类型是UIViewControllerTransitionCoordinator,它能响应VC转换进度,并且提供了以下方法:

- (BOOL)animateAlongsideTransition:(void (^)(id<UIViewControllerTransitionCoordinatorContext> context))animation
                        completion:(void (^)(id<UIViewControllerTransitionCoordinatorContext> context))completion;

【解决方法】

- (void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id <UIViewControllerTransitionCoordinator>)coordinator{    [coordinator animateAlongsideTransition:^(id<UIViewControllerTransitionCoordinatorContext> context)    {        NSLog(@"转屏前调入");    } completion:^(id<UIViewControllerTransitionCoordinatorContext> context)    {        NSLog(@"转屏后调入");    }];        [super viewWillTransitionToSize:size withTransitionCoordinator:coordinator];}


1 0
原创粉丝点击