在过渡期间使用 popViewController 闪烁白色的问题

Posted

技术标签:

【中文标题】在过渡期间使用 popViewController 闪烁白色的问题【英文标题】:Trouble with using popViewController flashing white during transition 【发布时间】:2011-06-04 17:13:16 【问题描述】:

我一直在努力使用 UINavigationalController 在视图之间切换。我已经多次使用这个系统没有问题,但在我的新应用程序中它不能正常工作。

这里是问题: 当我推送一个新的视图控制器时,我使用以下代码:

NewViewController *newVC = [[NewViewController alloc] initWithNib:@"NewView" bundle:nil];
[self.navigationController pushViewController:newVC animated:YES];
[newVC release];

我用来返回 newVC 内部的前一个视图的代码是:

[self.navigationController popViewControllerAnimated:YES];

我读到这可能会释放 self.navigationController 本身,所以我实现了这段代码:

UINavigationController *nc = [self navigationController];
[nc popViewControllerAnimated:YES];

结果是平滑地过渡到 newVC,没有白色闪烁,但是当返回到原始页面时,屏幕会闪烁白色,好像它在转换回原始页面之前释放了 newVC。然而!调试时,我在原始页面的 viewWillAppear 和 newVC 的 dealloc 上放置了断点,viewWillAppear + 带有白色闪光的过渡在调用 newVC 的 dealloc 之前全部完成。

如果有人可以帮助阐明这一点,我将不胜感激。

谢谢! ~阿拉什

【问题讨论】:

这是一篇旧帖子,但我目前面临完全相同的问题。你解决了吗? Alex,我不记得我是如何解决这个问题的,但如果你仍然遇到这个问题,请尝试以下 KaiDANTE 的建议。如果可行,请在此处告诉我们,我会将其标记为答案以供将来参考:)。 【参考方案1】:

这是一个老帖子,但对于那些将来可能会遇到这个问题的人,我已经通过将 ViewController 的视图的clipsToBounds 属性设置为“TRUE”来解决它

-(void)viewDidLoad 
    [super viewDidLoad];
    self.view.clipsToBounds = YES;

【讨论】:

【参考方案2】:

尝试将导航堆栈上各种视图的背景颜色更改为不同的可识别颜色(包括主窗口)。其中一个可能出于某种原因显示,如果每个都有不同的颜色,您可以很容易地确定哪个是罪魁祸首。

【讨论】:

【参考方案3】:

FWIW,同样的问题发生在我的 Swift 应用程序中。根本原因似乎是我正在这样做:

self.navigationItem.rightBarButtonItem = nil

...动态隐藏按钮,其中UIBarButtonItem 在当前UIViewController 中有一个插座。

我实际上并不需要那个按钮的IBOutlet,所以我移除了插座,它起作用了。

【讨论】:

以上是关于在过渡期间使用 popViewController 闪烁白色的问题的主要内容,如果未能解决你的问题,请参考以下文章

popViewController Animated:自定义过渡动画?

图像边界半径在 css 过渡期间不起作用

在 DST 过渡期间增加几个小时

如何在 CSS 过渡期间防止 Webkit 文本呈现变化

如何在 CSS 过渡期间防止 Webkit 文本呈现变化

如何修复titleView在过渡期间被隐藏到导航栏?