解决iOS View Controller Push/Pop时的黑色背影

iOS 自 7.x 某个版本以后,存在一个 Push/Pop ViewController 时右上角会有奇怪黑影冒出的问题。

这个问题由来已久,在做兔兔助手项目时就曾遇到过,现在记录下,不知道现在iOS9还有没有出现。

首先来看看这是什么样的一个问题吧,这个问题在兔兔助手正版客户端上也是存在的。简单的描述就是,在工具箱页中点击账户,进入详情页,或者从详情页右滑回到上页,刚刚触发滑动的那一瞬间,右上角会有黑影:

那么如何解决这个问题呢?

实际上很简单,如果这个 ViewController 是在 TabBarViewController 的 NavigationController 上 Push/Pop 的,那么只需要把 TabBarViewController 的 View 设置一下白色背景就可以了。

建立一个 UITabBarController 的子类,然后我重载 viewDidLoad 即可:

- (void)viewDidLoad {
   [super viewDidLoad];
   // 修复 Push到下一级右上角可恶的黑条
   self.view.backgroundColor = [UIColor whiteColor];
}

但是到这里为止,只解决了 50%,还有另外一种情况没有解决,那就是如果你 present 了一个 NavigationController + ViewController 后,在这个下面再进行 Pop/Push 也是会有黑影的情况下。这种情况如何解决呢?

类似的,设置一下 self.navigationController.view.backgroundColor = [UIColor whiteColor]; 即可。

不过,最后在stackoverflow上看到有人提供的解决方案,是在AppDelegate.m里面,didFinishLaunchingWithOptions方法里面加一句

self.window.backgroundColor = [UIColor whiteColor];

直接把window的背景设为白色,也解决了问题,亲测有效。

你可能感兴趣的:(解决iOS View Controller Push/Pop时的黑色背影)