Slow presentViewController performance

孤者浪人 提交于 2019-12-06 02:26:35

问题


I am using UIViewControllerTransitioningDelegate to build custom transitions between two view controllers (from a MKMapView) to a custom Camera built on (AVFoundation). Everything goes well until I call the presentViewController and the phone seems to hang for about 1 second (when I log everything out). This even seems to happen when I am transitioning to a much simpler view (I have a view controller that only displays a UITextview and even with that there appears to be about a .4 - .5 second delay before the transition is actually called).

This is currently how I am calling the transition

 dispatch_async(dispatch_get_main_queue(), ^{
        UIStoryboard*  sb = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
        CameraViewController *cvc2 = [sb instantiateViewControllerWithIdentifier:@"Camera"];

        cvc2.modalPresentationStyle = UIModalPresentationFullScreen; // Needed for custom animations to work
        cvc2.transitioningDelegate = self; //Conforms to the UIViewControllerTransitioningDelegate protocol
        [self presentViewController:cvc2 animated:YES completion:nil];
    });

Here is my animateTransition method for that call. Very straight forward and currently the view that is presenting this only has a MkMapView on it (no additional views or methods).

-(void)animateTransition:(id<UIViewControllerContextTransitioning>)transitionContext {

if (self.type == MapAnimationTypePresent) {//From map to another view

    UIView *containerView = [transitionContext containerView];
    UIViewController *fromViewController = [transitionContext viewControllerForKey:UITransitionContextFromViewControllerKey];
    UIViewController *toViewController = [transitionContext viewControllerForKey:UITransitionContextToViewControllerKey];

// Amazing category for iOS 7 compatibility found here - http://stackoverflow.com/a/25193675/2939977 
    UIView *toView = [toViewController viewForTransitionContext:transitionContext];
    UIView *fromView = [fromViewController viewForTransitionContext:transitionContext];

    toView.frame = self.view.frame;
    fromView.frame = self.view.frame;

    //Add 'to' view to the hierarchy
    toView.alpha = 0;
    [containerView insertSubview:toView aboveSubview:fromView];

    [UIView animateWithDuration:.5 animations:^{

        toView.alpha = 1;

    }completion:^(BOOL finished) {
        [transitionContext completeTransition:YES];
    }];
}

Any help is greatly appreciated.

来源:https://stackoverflow.com/questions/26476365/slow-presentviewcontroller-performance

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!