是否可以排除UITableViewCell中的某些子视图被突出显示或更改其高亮实现?
我在UITableViewCell中为某些场景添加了橙色警告标签,并且它与其余的单元格正确地突出显示,这很好。但是,当单元格停止以动画方式突出显示时,您首先会看到警告标签的背景变为白色,然后闪烁为橙色。 我要么将它排除在被突出显示之外,要么改变它的高亮显示实现,以便将其动画回橙色。
答案 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属性指定哪些视图应更改颜色