在自定义segue过渡期间,视图的导航栏项目放错了位置

时间:2014-09-30 18:46:02

标签: ios objective-c uistoryboardsegue

我有一个使用UIViewAnimationOptionTransitionFlipFromLeft在视图之间转换的自定义segue。

当新视图出现在屏幕上时,会有一个短暂但可辨别的'闪烁'由导航栏元素从左对齐状态跳转到其适当位置引起的。以下是在转换结束时捕获的屏幕截图:

Misaligned Nav Bar Items
您可以看到标题和两个小节按钮项目保持对齐;完全不在他们最终休息的地方。

以下是转换完成后捕获的屏幕截图:

Correctly aligned Nav Bar Items
这里按钮和标题正确定位。在第一张图像和第二张图像之间的瞬间,图标闪烁到位。

视图在故事板中设置。该视图不是UINavigationController层次结构的一部分,因此导航栏及其项目是通过属性检查器在模板上手动创建的,模拟指标' - >顶栏:半透明导航栏'。

如何在转换过程中首次出现导航栏项目时强制它们是否正确定位?

提前谢谢! :)

1 个答案:

答案 0 :(得分:6)

知道了!我发现在transitionWithView中使用[UIView performWithoutAnimation:^ {}]块解决了这个问题:

[UIView transitionWithView:src.navigationController.view duration:0.2
                   options:UIViewAnimationOptionTransitionFlipFromLeft
                animations:^{
                                [UIView performWithoutAnimation:^{
                                    [navController setViewControllers:[NSArray arrayWithObject:dst] animated:NO];
                                }];
                            }
                completion:nil];