使用导航堆栈中的上一视图模糊当前VC

时间:2015-11-09 11:36:09

标签: ios uiviewcontroller uistoryboard tvos uivisualeffectview

我正在UIStorybord制作一个tvOS应用。我想根据导航堆栈中之前的UIViewcontroller来模糊当前的UIViewController。我正在使用UIVisualEffectView类。所以我有我的firstViewController,我添加了UIImageView。在下一个UIViewController(这个VC将被推到我的FirstViewController之上)我在storyboard中的self.view上添加了UIVisualEffectView,然后在{{1}的view属性中添加了UIButton但是我没有任何模糊效果。

我没有为此编写任何代码。我必须为此编写代码吗?我想在故事板中做所有事情,因为在故事板中添加约束更容易,而不是在代码中添加约束。

这是图像 Storyboard Image

任何帮助都将受到高度赞赏。感谢

1 个答案:

答案 0 :(得分:0)

默认导航过渡将前一个viewController移动到左侧,然后将其从视图堆栈中移除。

您需要使用viewController来实现UINavigationControllerDelegate协议:

- (id<UIViewControllerAnimatedTransitioning>)navigationController:(UINavigationController *)navigationController animationControllerForOperation:(UINavigationControllerOperation)operation fromViewController:(UIViewController *)fromVC toViewController:(UIViewController *)toVC;

现在,您需要实现实现UIViewControllerAnimatedTransitioning的自定义动画对象,并在上面提到的UINavigationController委托方法中返回该类的实例。

为了简化过程,您可以向第二个viewController添加UIVisualEffectView。您将视图内容放在效果视图中。

在自定义动画制作工具中,您只需要为目标viewController设置动画,并将源视图控制器保持在原位。