自定义Segue在动画结束时闪烁,并在iOS8中发出警告



我创建了一个自定义片段来创建垂直幻灯片动画。它在iOS7中运行良好。但它在动画结束时发出警告和闪烁效果。

警告消息:对destinationViewController开始/结束外观转换的调用不平衡

以下是我的代码

-(void)perform{
    NSTimeInterval delayinterval = 0.0;
    UIViewController *sourceViewController = self.sourceViewController;
    UIViewController *destinationViewController = self.destinationViewController;
    destinationViewController.view.center    = sourceViewController.view.center;
    destinationViewController.view.transform = sourceViewController.view.transform;
    destinationViewController.view.bounds    = sourceViewController.view.bounds;
    CGRect destination = destinationViewController.view.frame;
    destinationViewController.view.frame = CGRectMake(destination.origin.x, destination.size.height, destination.size.width, destination.size.height);
    [sourceViewController.view.superview addSubview:destinationViewController.view];
    [UIView animateWithDuration:0.2 delay:delayinterval options:UIViewAnimationOptionTransitionNone animations:^{
        CGRect orginator = sourceViewController.view.frame;
        sourceViewController.view.frame = CGRectMake(orginator.origin.x, -orginator.size.height, orginator.size.width, orginator.size.height);
        destinationViewController.view.frame = orginator;
    } completion:^(BOOL finished) {
        // remove from temp super view
        [destinationViewController.view removeFromSuperview];
          if ([self.identifier isEqualToString:@"UnWindCustomSettingsSegue"]){
              [sourceViewController dismissViewControllerAnimated:NO completion:NULL];
          }else {
              [sourceViewController presentViewController:destinationViewController animated:NO completion:NULL];
          }
    }];
}

看看这篇文章接受的答案SO帖子:执行自定义分段时调用不平衡

该问题中的OP通过添加正在删除的视图的屏幕截图来修复闪烁。此外,被接受的答案解释了你为什么会收到警告。

相关内容

最新更新