更改UITableViewCell中某些子视图的突出显示

时间:2011-11-25 09:47:45

标签: ios uitableview

是否可以排除UITableViewCell中的某些子视图被突出显示或更改其高亮实现?

我在UITableViewCell中为某些场景添加了橙色警告标签,并且它与其余的单元格正确地突出显示,这很好。但是,当单元格停止以动画方式突出显示时,您首先会看到警告标签的背景变为白色,然后闪烁为橙色。 我要么将它排除在被突出显示之外,要么改变它的高亮显示实现,以便将其动画回橙色。

4 个答案:

答案 0 :(得分:2)

如果超级视图要求突出显示视图,则似乎不可能将其排除在外。但是,如果您只是停止任何突出显示行为或将其更改为您的规格,则覆盖其setHighlighted:可以得到相同的结果。

答案 1 :(得分:1)

在iOS 6中,您可以在UITableViewDelegate中使用2种方法来自定义单元格的突出显示,以及子视图:

- (void)tableView:(UITableView *)tableView didHighlightRowAtIndexPath:(NSIndexPath *)indexPath {
    UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
    [cell setBackgroundColor:[UIColor lightGrayColor]];
}

- (void)tableView:(UITableView *)tableView didUnhighlightRowAtIndexPath:(NSIndexPath *)indexPath {
    UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
    [UIView animateWithDuration:0.5f animations:^{
        [cell setBackgroundColor:[UIColor whiteColor]];
    }];
}

我没有显示更改子视图的代码。

但您可以像为每个单元格配置的方式一样,使用单元格viewWithTag访问子视图,然后更改背景或任何其他属性。

答案 2 :(得分:0)

您无法从动画中删除某些子视图,但您可以更改以下行为:

避免UITableViewCell执行这样的突出显示动画:

cell.selectionStyle = UITableViewCellSelectionStyleNone;

选择单元格后,请手动更改背景,如下例所示:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];

    [cell setBackgroundColor:[UIColor purpleColor]];

    [UIView animateWithDuration:0.5f animations:^{
            [cell setBackgroundColor:[UIColor clearColor]];
    }];

}

我有一个简单的UITableView,这就像我需要的那样工作。

答案 3 :(得分:0)

为了在表格视图单元格上具有自定义突出显示行为,请重写setHighlighted方法并将parse Highlighted:false解析为super方法,并自定义基于

下的Highlight属性指定哪些视图应更改颜色