首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于UIVisualEffectView的UITableView背景

基于UIVisualEffectView的UITableView背景
EN

Stack Overflow用户
提问于 2014-09-24 11:15:27
回答 2查看 3.7K关注 0票数 6

我正在创建一个UITableViewController (在UINavigationController的根目录下),并在另一个视图控制器的基础上以模式的方式显示它。我让它在某种程度上起作用,所以当视图加载和viewDidAppear被调用时,视觉效果看起来很好。但是就在viewDidAppear之后,视觉效果消失了,桌面视图有一个白色的背景。

在我提交的UITableViewController中,我在viewDidLoad中添加了以下内容:

代码语言:javascript
复制
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;
}

我还实现了这一点,以确保单元格具有清晰的背景:

代码语言:javascript
复制
- (void) tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath{
    if (NSClassFromString(@"UIVisualEffectView") ) {
        cell.backgroundColor = [UIColor clearColor];
    }
}

我还在tableView的cellForRowAtIndexPath:中设置了cellForRowAtIndexPath:,但这也没有帮助。

同样,当视图加载时,我得到了正确的效果,但是当它出现在屏幕上时,它就失去了模糊的背景。有什么可能出问题了吗?我还尝试将blueEffectView保留为视图控制器中的属性,但没有取得任何进展。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-10-04 03:05:42

问题是,当您以默认设置模式呈现视图控制器时,一旦它接管了屏幕,底层视图控制器似乎基本上就会被擦除。这就是为什么你的模糊效果看起来很好,直到演示动画完成-潜在的视图消失。

要实现所需的行为,您需要将segue表示样式更改为将保留基础视图控制器的内容,比如在全屏上而不是默认的全屏上。

请注意,当您拒绝此模式表示时,将不会在呈现视图控制器上调用viewDidAppear,因为它现在总是可见的。如果你在被解雇时依赖那个方法来执行任何功能的话,这会咬你一口。

票数 3
EN

Stack Overflow用户

发布于 2014-10-06 19:39:11

你在用故事板吗?

选择以模式方式使用的视图控制器(或者如果它被包装在另一个VC中,则选择包装器),并将演示文稿组合框设置为“over全屏”或“”。(我其实不知道这两者有什么区别,他们似乎都在做同样的事情。)

这样做后,你的模糊效果应该只是工作的™。而且,我认为这在iOS 8中是新的,我还没有在iOS 7中测试过。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26015532

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档