按 UITableViewCell 时,圆形视图消失了

Posted

技术标签:

【中文标题】按 UITableViewCell 时,圆形视图消失了【英文标题】:Circle View is gone when press UITableViewCell 【发布时间】:2015-07-23 01:53:44 【问题描述】:

在 UITableViewCell 的 contentView 中,我放了一个UIView 并将其图层cornerRadius 设置为其高度的一半,使其成为一个圆形。并将其颜色设置为红色。 当我运行它并按下UITableViewCell时,红色圆圈变成透明的。

在按下单元格之前。

按下单元格后。

哪里出错了,我觉得和cornerRadius有关。谁能帮帮我?

【问题讨论】:

【参考方案1】:

正如我已经回答here:

UITableViewCell 改变所有子视图的背景颜色时 单元格被选中或突出显示。

我已经根据你的问题调整了我之前的回答

你有三个选择:

    如果你不想要任何选择样式

    cell.selectionStyle = UITableViewCellSelectionStyleNone;
    

    子类UITableViewCell 并覆盖Tableview 单元格的setSelected:animated 和/或setHighlighted:animated,如Leo 回答

    将圆圈添加为图层

    CALayer* layer = [CALayer layer];
    layer.frame = CGRectMake(10, 10, 30, 30);
    layer.backgroundColor = [UIColor redColor].CGColor;
    layer.cornerRadius = 20/2.0f;
    [cell.contentView.layer  addSublayer:layer];
    

【讨论】:

【参考方案2】:

因为 UITableviewCell 在选中时会改变视图背景颜色。

你需要继承 UITableviewCell 的子类,并将背景颜色改回来

截图

代码

class CustomCell:UITableViewCell
override func setHighlighted(highlighted: Bool, animated: Bool) 
    super.setHighlighted(highlighted, animated: animated)
    let view = self.viewWithTag(10) //The tag of this view is 10
    view?.backgroundColor = UIColor.redColor()

override func setSelected(selected: Bool, animated: Bool) 
    super.setSelected(selected, animated: animated)
    let view = self.viewWithTag(10)
    view?.backgroundColor = UIColor.redColor()

 

【讨论】:

以上是关于按 UITableViewCell 时,圆形视图消失了的主要内容,如果未能解决你的问题,请参考以下文章

UITableViewCell 上的圆形 UIImageView 在首次加载时不起作用

UITableViewCell 的子视图不能是圆形的

圆形图像视图最初在 UITableViewCell 中加载为正方形 - Xamarin.iOS

更改 UITableViewCell 中圆形编辑按钮的颜色

UITableViewCell 的 Nib 文件中视图的大小

UITableViewCell 中的圆形按钮