【发布时间】:2014-04-30 19:45:50
【问题描述】:
我有一个简单的基于 iOS NavigationController 的应用程序。两个UICollectionViews,一个接一个。如果点击了“第一个集合”上的元素,则将打开“第二个集合”。
很简单。
重要提示:
“UICollectionViews 都具有透明背景。使用navigationController 的通用背景颜色。(从UINavigationController 继承的类)”
问题:
如果理解正确,NavigationController 的 push 方法是按照算法工作的:
- 推送视图已创建。
- 透明的灰色叠加层在推送视图上创建。
- NavigationController 使用标准动画推送视图。 (灰色覆盖层仍然存在)
- 灰色覆盖消失。
(如果推送视图有透明背景,则灰色竖线可见)
下一步: 我试图通过覆盖推送方法来解决这个问题。这是我得到的:
- (void)pushViewController:(UIViewController *)viewController
animated:(BOOL)animated
{
CATransition *transition = [CATransition animation];
transition.duration = 0.45;
transition.timingFunction = [CAMediaTimingFunction
functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
transition.type = kCATransitionPush;
transition.subtype = kCATransitionFromRight;
transition.fillMode = kCAFillModeForwards;
transition.delegate = self;
[self.view.layer addAnimation:transition forKey:nil];
[super pushViewController:viewController animated:animated];
}
这种方式创建了自己的推送动画,但使用了另一个标准动画,我无法删除。 (显示和隐藏视图中断)
问题: “如何在没有淡入淡出、黑屏和其他动画滤镜的情况下推送 ViewController?”
带有主题名称的解决方案(在 stackoverflow.com 上)
- iOS 7
UINavigationController推送动画阴影 - iOS 7 在导航的自定义动画中显示黑色背景
不工作。
【问题讨论】:
标签: ios objective-c ios7