将iOS 7样式模糊应用于表视图节标题

时间:2014-05-01 01:49:59

标签: ios cocoa-touch uitableview graphics

我想在表格视图的表格部分标题中应用模糊效果,类似于您在控制中心中看到的那样。我看过一些GitHub回购,比如iOS-blur和LiveFrost,但它们似乎不起作用。它们实际上不会模糊滚动到节标题的表格单元格,但它们模糊了截面视图的内容,这正是我想要避免的。

有什么建议吗?

- (UIView *) tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section{
    UITableViewCell *headerView = [tableView dequeueReusableCellWithIdentifier:@"SetSelectionHeaderCell"];

    headerView.backgroundColor = [UIColor clearColor];
    //LFGlassView *glassView = [[LFGlassView alloc] initWithFrame:headerView.frame];
    JCRBlurView *glassView = [JCRBlurView new];
    [glassView setFrame:headerView.frame];
    [glassView setBlurTintColor:[UIColor blackColor]];
    [headerView addSubview:glassView];

    [headerView sendSubviewToBack:glassView];


    return headerView;
}

1 个答案:

答案 0 :(得分:1)

您的问题是您要将blurView添加为headerView的子视图,但headerView的backgroundColor默认为白色,因此不透明。为了查看headerView背后的视图,您需要使headerView透明。您可以通过设置

来完成此操作
headerView.backgroundColor = [UIColor clearColor]

iOS-Blur视图通过模糊其背后的视图来工作。因此,您看到headerView标题标签模糊的原因是因为blurView在添加标签后作为子视图添加到headerView。这会将blurView放在标签前面,作为最顶层的子视图。在将其添加为子视图后,您需要将模糊视图一直发送到后面。

[headerView sendSubviewToBack:blurView];

如果您使headerView透明,并在后面添加blurView,则应该可以按照您的意愿使用。

结果应如下所示:

this

我还应该注意,如果您每次将其作为tableView单元格出列时将子视图添加到headerView,子视图将会累积。