UIStoryboardSegue & UIVisualEffectView - 完成块退出后模糊效果丢失
Posted
技术标签:
【中文标题】UIStoryboardSegue & UIVisualEffectView - 完成块退出后模糊效果丢失【英文标题】:UIStoryboardSegue & UIVisualEffectView - Blur effect lost after completion block exits 【发布时间】:2014-10-24 15:19:13 【问题描述】:我有一个由带有 UIImageView 的视图控制器组成的小型应用程序。当用户点击屏幕时,会显示一个带有自定义转换的 tableview 控制器(模型)。过渡将 UIBlurEffectview 添加到呈现的 tableview。想要的效果是在模糊图像上显示 UITableView。
当 tableview 出现时,它会在一瞬间显示模糊视图。但是,一旦完成块退出(在 presentViewController:animated:completion 上),视图就会完全变黑。
完成块退出前的示例:
完成块退出后:
这里是转场代码:
UIViewController *sourceController = self.sourceViewController;
UIViewController *destinationController = self.destinationViewController;
UIVisualEffect *blurEffect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleDark];
UIVisualEffectView *blurView = [[UIVisualEffectView alloc]initWithEffect:blurEffect];
blurView.frame = destinationController.view.frame;
[destinationController.view setOpaque:NO];
[destinationController.view setBackgroundColor:[UIColor clearColor]];
[destinationController.view insertSubview:blurView atIndex:0];
[destinationController setModalPresentationStyle:UIModalPresentationFullScreen];
[sourceController presentViewController:destinationController animated:NO completion:^
NSLog(@"Completed");
];
我有点不知道该去哪里。我知道调用完成块之前的最后一次调用是显示控制器上的 viewDidAppear,这并没有改变任何东西。非常感谢任何帮助。
【问题讨论】:
【参考方案1】:找到了解决办法。如果您使用的是 Modal segue,则需要将 Presentation 从默认设置为全屏。
【讨论】:
我得到了这个工作,但现在有趣的部分是 unwind segue 没有为我的源视图控制器设置动画:(以上是关于UIStoryboardSegue & UIVisualEffectView - 完成块退出后模糊效果丢失的主要内容,如果未能解决你的问题,请参考以下文章