UITableViewCell高亮(按下)时,子视图背景色变透明的解决方法

本文介绍了一个自定义UITableViewCell时UILabel背景色在cell高亮状态下消失的问题及解决方案。通过重写setHighlighted方法并设置cell.selectionStyle为UITableViewCellSelectionStyleNone来避免系统默认行为。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 转载自: https://blog.youkuaiyun.com/cuibo1123/article/details/53192441

UITableViewCell highlighted subviews backgroundColor

 

自定义的UITableViewCell,在上面添加一个UIView(这里是UILabel),设置UILabel背景色。但是当cell处于按下状态时,UILabel背景色就会消失。如图(选中行的(2)背景色消失):

 

其实这个问题的原因可以在文档里找到,(大意)当cell处于highlighted/selected状态时,默认会执行如下动作:

1:将其所有子视图的backgroundColor设置为清除颜色(透明)。

2:突出显示可以突出显示的所有子视图内容(就是强调内容),例如UIImageView。

 

想要让消失的UILabel背景色回来,只要解决第一个问题即可。

解决方法:

重载自定义cell的highlighted方法(是否重载selected看你需要),需要注意设置:

 

cell.selectionStyle = UITableViewCellSelectionStyleNone;

 

否则cell高亮时还是会执行系统默认动作。

 

 
  1. //由于numLabel修改了背景颜色,所以高亮需要自己处理

  2. //注意:cell的selectionStyle必须是:UITableViewCellSelectionStyleNone;否则无效

  3. -(void)setHighlighted:(BOOL)highlighted animated:(BOOL)animated

  4. {

  5. [super setHighlighted:highlighted animated:animated];

  6. //动画高亮变色效果

  7. [UIView animateWithDuration:0.3 animations:^{

  8. if(highlighted)

  9. self.contentView.backgroundColor = [UIColor colorWithWhite:0.85 alpha:1];

  10. else

  11. self.contentView.backgroundColor = [UIColor whiteColor];

  12. }];

  13. }

 

 

这样问题就解决了。

 

转载请注明出处:http://blog.youkuaiyun.com/cuibo1123

=======

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值