UITableualEffectView在UITableView背景上

我正在创建一个UITableViewController(在UINavigationController的根目录下)并在另一个视图控制器上呈现这个模态.我在一定程度上工作,这样当视图加载和viewDidAppear被调用时,视觉效果看起来很好.但是在viewDidAppear之后,视觉效果消失了,tableview有一个白色背景.

在我提出的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中设置了cell.backgroundColor = [UIColor clearColor]:但这也无济于事.

同样,我在视图加载时获得了正确的效果,但是一旦它出现在屏幕上,它就会失去模糊背景.什么想法可能会出错?我还尝试将blueEffectView保留为视图控制器中的属性,但没有运气

解决方法

问题是,当您使用认设置以模态方式呈现视图控制器时,一旦完成接管屏幕,基础视图控制器似乎基本上被擦除.这就是为什么在演示动画完成之前,模糊效果看起来很棒 – 底层视图消失了.

要实现所需的行为,您需要将segue表示样式更改为保留基础视图控制器的内容,例如Over Over Screen而不是认的Full Screen.

请注意,当您关闭此模式演示文稿时,将不会在呈现视图控制器上调用viewDidAppear,因为它现在始终可见.如果您依靠该方法在解雇时执行任何功能,那可能会让您感到困惑.

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...