IOS9开始如何处理转屏

【问题】

使用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)coordinator;

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

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

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

【解决方法】

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


你可能感兴趣的:(IOS开发)