我正在创建一个UITableViewController (在UINavigationController的根目录下),并在另一个视图控制器的基础上以模式的方式显示它。我让它在某种程度上起作用,所以当视图加载和viewDidAppear被调用时,视觉效果看起来很好。但是就在viewDidAppear之后,视觉效果消失了,桌面视图有一个白色的背景。
在我提交的UITableViewController中,我在viewDidLoad中添加了以下内容:
if (NSClassFromString(@"UIVisualEffectView") && !UIAccessibilityIsReduceTransparencyEnabled()) {
self.tableView.backgroundColor = [UIColor clearColor];
UIBlurEffect *blurEffect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleLight];
UIVisualEffectView *blurEffectView = [[UIVisualEffectView alloc] initWithEffect:blurEffect];
[blurEffectView setFrame:self.tableView.frame];
self.blurView = blurEffectView;
self.tableView.backgroundView = self.blurView;
}我还实现了这一点,以确保单元格具有清晰的背景:
- (void) tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath{
if (NSClassFromString(@"UIVisualEffectView") ) {
cell.backgroundColor = [UIColor clearColor];
}
}我还在tableView的cellForRowAtIndexPath:中设置了cellForRowAtIndexPath:,但这也没有帮助。
同样,当视图加载时,我得到了正确的效果,但是当它出现在屏幕上时,它就失去了模糊的背景。有什么可能出问题了吗?我还尝试将blueEffectView保留为视图控制器中的属性,但没有取得任何进展。
发布于 2014-10-04 03:05:42
问题是,当您以默认设置模式呈现视图控制器时,一旦它接管了屏幕,底层视图控制器似乎基本上就会被擦除。这就是为什么你的模糊效果看起来很好,直到演示动画完成-潜在的视图消失。
要实现所需的行为,您需要将segue表示样式更改为将保留基础视图控制器的内容,比如在全屏上而不是默认的全屏上。
请注意,当您拒绝此模式表示时,将不会在呈现视图控制器上调用viewDidAppear,因为它现在总是可见的。如果你在被解雇时依赖那个方法来执行任何功能的话,这会咬你一口。
发布于 2014-10-06 19:39:11
你在用故事板吗?
选择以模式方式使用的视图控制器(或者如果它被包装在另一个VC中,则选择包装器),并将演示文稿组合框设置为“over全屏”或“”。(我其实不知道这两者有什么区别,他们似乎都在做同样的事情。)

这样做后,你的模糊效果应该只是工作的™。而且,我认为这在iOS 8中是新的,我还没有在iOS 7中测试过。
https://stackoverflow.com/questions/26015532
复制相似问题