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

原创 2016年11月16日 23:09:51

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高亮时还是会执行系统默认动作。

//由于numLabel修改了背景颜色,所以高亮需要自己处理
//注意:cell的selectionStyle必须是:UITableViewCellSelectionStyleNone;否则无效
-(void)setHighlighted:(BOOL)highlighted animated:(BOOL)animated
{
    [super setHighlighted:highlighted animated:animated];
    //动画高亮变色效果
    [UIView animateWithDuration:0.3 animations:^{
        if(highlighted)
            self.contentView.backgroundColor = [UIColor colorWithWhite:0.85 alpha:1];
        else
            self.contentView.backgroundColor = [UIColor whiteColor];
    }];
}

这样问题就解决了。


转载请注明出处:http://blog.csdn.net/cuibo1123

=======


欢迎加我微信探讨问题:lofocus



版权声明:本文为博主原创文章,未经博主允许不得转载。博主微信:lofocus https://blog.csdn.net/cuibo1123/article/details/53192441

iOS当UITableViewCell被选中或者高亮的时候,它的所有子view的颜色都会改变

UITableViewCell changes the background color of all sub views when cell is selected or highlighted. ...
  • qq_21649645
  • qq_21649645
  • 2016-04-29 17:15:10
  • 3061

UITableView UITableViewCell点击时,子view背景色消失

在自定义cell时经常会遇到给view添加背景色,但是点cell后,所有的背景色都变成cell的高亮颜色了 例如在cell中添加一个label设置label的背景色,点击后效果如下 解决办法:...
  • u013282507
  • u013282507
  • 2016-09-22 11:06:15
  • 1297

android中popupwindow弹出后,屏幕背景变成半透明

android中popupwindow弹出后,屏幕背景变成半透明这个效果很普通。实现的方法也很多。我使用的可能是最简单的一种,就是设置一下getWindows的透明度。不多说上代码 /** * 设...
  • chenguang79
  • chenguang79
  • 2015-01-22 11:07:49
  • 86343

UITableViewCell的选中时的颜色设置

1.系统默认的颜色设置 //无色 cell.selectionStyle = UITableViewCellSelectionStyleNone; //蓝色 cell.selectionStyle...
  • a6472953
  • a6472953
  • 2012-05-03 17:10:46
  • 97584

开发细节--点击cell的时候,默认的点击效果覆盖控件背景色的问题

解决点击cell的时候,默认的点击效果覆盖控件背景色的问题(OC&&Swift)
  • feng2qing
  • feng2qing
  • 2016-06-14 13:59:18
  • 1716

iOS 自定义cell点击后里面的子控件背景颜色被改变解决办法

1. 有一个自定义的cell,里面添加了一个自定义的背景颜色是红色的BadgeView控件,当点击cell的时候,BadgeView控件的背景颜色没了,如下图: 2. 解决办法是在c...
  • yaoliangjun306
  • yaoliangjun306
  • 2016-06-25 11:05:20
  • 2351

iOS之解决UITableView与背景颜色不一致问题

近日项目开发中,发现UITableViewController在设定了背景色后(颜色1)与TableView的颜色2非常不搭调: 翻查代码发现: - (CGFloat)tableView:(U...
  • LVXIANGAN
  • LVXIANGAN
  • 2016-03-29 12:12:12
  • 3115

Xcode9学习笔记44 - 设置UITableView单元格背景色

import UIKit class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {//表...
  • u011728344
  • u011728344
  • 2017-11-09 07:22:09
  • 114

iOS6 UITableView的背景颜色的修改

转自 http://blog.csdn.net/jinglijun/article/details/8214115 坑爹的apple,这一年sdk 换了n个版本,让我们悲催的程序员也不挺的学...
  • cuiweijie3
  • cuiweijie3
  • 2013-03-14 01:42:26
  • 2434

iOS 开发 解决UITableViewcell单选动态改变cell文字和背景颜色的功能,且第一次默认选择第一个cell

功能需求一:头一次进来时默认选择第一个cell- (void)viewDidLoad { [super viewDidLoad]; self.navigationItem.title =...
  • kuangdacaikuang
  • kuangdacaikuang
  • 2016-12-22 14:28:40
  • 1789
收藏助手
不良信息举报
您举报文章:UITableViewCell高亮(按下)时,子视图背景色变透明的解决方法
举报原因:
原因补充:

(最多只允许输入30个字)