我在UIViewController
( N )中推送clearColor
( A )UINavigationController
作为背景。< / p>
N 放置在Container View中。此视图具有我想要始终显示的背景。
然后,当Push动画时,它在我的VC中显示灰色/透明背景( A ),当它完成动画时,它会正确显示。
有没有办法避免这种灰色?
我已经通过在 A 中添加白色视图背景并使其在viewDidAppear
中消失而“完成”它,但我认为可以在没有这个技巧的情况下完成...
- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
__weak TestsViewController *weakSelf = self;
[UIView animateWithDuration:.3 animations:^{
TestsViewController *ownSelf = weakSelf;
ownSelf.backgroundView.alpha = 0;
}];
}
答案 0 :(得分:3)
将应用程序窗口的背景颜色设置为白色:
// applicationDidFinishLaunching
self.window.backgroundColor = [UIColor whiteColor];
推送动画通常最终使用透明区域后面窗口的背景颜色,默认情况下窗口背景颜色是清晰的,因此它通过透明导航栏和工具栏显示黑色。
编辑:很抱歉,误解了问题所在。当您使用透明背景颜色推动视图控制器时,您在视图控制器后面看到的背景是在视图控制器后面呈现的阴影(您可以在非透明视图控制器中看到它的边缘)。
This question可以解答您的问题。基本上,您必须实现自定义动画控制器,以自己提供过渡动画(如here所述)。继续使用你的技巧可能比实现自己的自定义导航过渡更容易。