在作iOS项目的开发中,UITableView控件的应用十分普遍。在进行自定义UITableViewCell时,常常有小伙伴遇到这样的问题:在UITableViewCell上面添加了一个有背景颜色的子视图,当用户点击UITableViewCell或者选中UITableViewCell时,Cell上的子视图发生了奇怪的变化,其背景色变透明了,若是添加在Cell上的子视图只是一个色块,那么咱们看起来,这个子视图好像莫名其妙的消失了同样。以下图所示:spa
产生这种状况的主要缘由是因为UITableViewCell的选中风格所致。若是开发者不进行设置,UITableViewCell中的selectionStyle属性默认风格为UITableViewCellSelectionStyleBlue。这时,若是用户点击或者选中了某个Cell,系统会自动将其上子视图的背景色改为透明以便统一Cell的总体背景颜色。开发者能够将其设置为UITableViewCellSelectionStyleNone枚举值来不适用任何Cell的选中风格。code
若是须要使用Cell的选中风格同时又不想让Cell上的子视图收到影响,咱们能够继承UITableViewCell后在其中覆写父类的以下两个方法,在这些方法中从新设置子视图的背景色:继承
//这个方法在Cell被选中或者被取消选中时调用 - (void)setSelected:(BOOL)selected animated:(BOOL)animated { [super setSelected:selected animated:animated]; self.testLabel.backgroundColor = [UIColor orangeColor]; } //这个方法在用户按住Cell时被调用 -(void)setHighlighted:(BOOL)highlighted animated:(BOOL)animated{ [super setHighlighted:highlighted animated:animated]; self.testLabel.backgroundColor = [UIColor orangeColor]; }
以下图:开发
专一技术,热爱生活,交流技术,也作朋友。io
——珲少 QQ群:203317592class