【问题标题】:CATransition white flash in background?CATransition 在背景中出现白色闪光?
【发布时间】:2011-09-19 23:24:31
【问题描述】:

我正在尝试让 pushViewController 从左侧滑入,而不是从右侧滑入,如下所示:

Page14Controller * controller = [[Page14Controller alloc] initWithNibName:@"Page14Controller" bundle:nil];

CATransition* transition = [CATransition animation];
transition.duration = 0.3;
transition.type = kCATransitionPush;
//                transition.type = kCATransitionMoveIn; 
transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
//kCATransitionMoveIn; //, kCATransitionPush, kCATransitionReveal, kCATransitionFade
transition.subtype = kCATransitionFromLeft; 
//kCATransitionFromLeft, kCATransitionFromRight, kCATransitionFromTop, kCATransitionFromBottom
[self.navigationController.view.layer addAnimation:transition forKey:nil];

[self.navigationController pushViewController:controller animated:NO];

当我这样做时,当前控制器会变成白色,这看起来很糟糕。为什么会这样?我尝试将当前视图的 alpha 的背景设置为 0。

【问题讨论】:

    标签: iphone ios uinavigationcontroller pushviewcontroller catransition


    【解决方案1】:

    我弄清楚了明显是什么导致了白色闪烁:它是主窗口的背景。将此设置为 alpha=0 有助于白色效果。它appears that kCATransitionPush actually fades the view being pushed off screen,很明显如果下面是绿色的,那么它会褪色为绿色。如果它不褪色就好了,但这是一个不同的问题。

    【讨论】:

    • TY!我确实在其中有一个偷偷摸摸的 UIView,它是白色的,最终导致了白色背景“噪音”。
    • 嗨,我遇到了完全相同的问题,我尝试将我的 UIWindow 的 .backgroundColor 设置为 alpha = 0,但这并没有解决问题。你到底在干什么 ?谢谢。
    【解决方案2】:

    我会避免过多地弄乱 UIViewController 的视图。

    实现您想要的更简单的方法是使用以下方法:

    UINavigationController * nc = self.navigationController;
    NSArray * viewControllers = ;
    NSMutableArray * newControllers = [NSMutableArray arrayWithArray:[nc viewControllers]];
    [newControllers insertObject:controller atIndex:newControllers.count-1];
    nc.viewControllers = newControllers;
    [nc popViewControllerAnimated:YES];
    

    请注意,它替换顶视图控制器与新控制器,而不是仅仅推动它;这可能不是您想要的(但如果您使用它来模拟页面更改,您可能不希望永久推送更多控制器,直到内存耗尽)。

    【讨论】:

    • 我确实想推一个新控制器,因为新控制器有一个后退按钮,可以将它滑到左边,恢复以前的控制器。
    • 如果你要做很多自定义的东西,那么你自己做所有的自定义过渡可能是值得的。例如,您可以只设置 view.frame。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-13
    • 2020-02-16
    • 2017-08-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多