我正在创建一个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保留为视图控制器中的属性,但没有运气