自定义Segue闪烁

时间:2015-05-07 10:36:48

标签: ios uistoryboardsegue uianimation

我使用以下代码覆盖自定义segue中的perform方法,以便在视图控制器之间移动时实现滑动效果。

- (void)perform
{
    MasterController *sourceController = (MasterController *)self.sourceViewController;
    MasterController *destinationController = (MasterController *)self.destinationViewController;

    CGRect frame = sourceController.view.frame;

    [sourceController.view addSubview:destinationController.view];
    [destinationController.view setFrame:CGRectOffset(frame, frame.size.width, 0)];

    [UIView animateWithDuration:0.5 animations:^{

        [sourceController.view setFrame:CGRectOffset(frame, -frame.size.width, 0)];

    } completion:^(BOOL finished) {

        [sourceController presentViewController:destinationController animated:NO completion:nil];
        [destinationController.view removeFromSuperview];

    }];
}

类似于此代码存在于整个互联网上。问题是“有时”动画结束后屏幕闪烁/闪烁/闪烁然后恢复正常。

删除[destinationController.view removeFromSuperview];代码行似乎解决了这个问题。但是,这看起来不对!正确?

任何想法如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

是的,只需删除[destinationController.view removeFromSuperview];即可。它将为您完成。在segue结束时,destinationController.view将有一个新的超级视图,并将从sourceController.view中删除。