我创建了一个自定义片段来创建垂直幻灯片动画。它在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通过添加正在删除的视图的屏幕截图来修复闪烁。此外,被接受的答案解释了你为什么会收到警告。