在UITableViewCell中绘制一个彩色圆圈

时间:2016-09-16 15:47:29

标签: ios swift uitableview

我正在尝试在左侧生成带有彩色圆圈的UITableViewCell。 我的计划是使用UIButton并操纵其图层的角半径。 但是,彩色按钮永远不会出现。

我的xib:

enter image description here

我的ColorHolder UIButton有一个IBOutlet,颜色是变量。

class ColoredCircleCell: UITableViewCell {

    @IBOutlet weak var colorHolder: UIButton!
    @IBOutlet weak var infoRow1: UILabel!
    @IBOutlet weak var infoRow2: UILabel!

    var circleColor: CGColor = UIColor.clear.cgColor 

    override func awakeFromNib() {
        super.awakeFromNib()

        colorHolder.layer.cornerRadius = colorHolder.bounds.size.height / 2
        colorHolder.layer.backgroundColor = circleColor
        colorHolder.clipsToBounds = true
}

在我的cellForRowAt indexPath中:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "CircleCell", for: indexPath) as! ColoredCircleCell

        print(cell.colorHolder.bounds.size.height)

        cell.colorHolder.layer.cornerRadius = cell.colorHolder.bounds.size.height / 2
        cell.colorHolder.layer.backgroundColor = UIColor.red.cgColor

        cell.infoRow1.text = "H1"

        return cell
    }

控制台告诉我单元格的大小是1000.我猜它仍然没有调整行高。

编辑:我已将问题缩小到cell.colorHolder.layer.cornerRadius = cell.colorHolder.bounds.size.height / 2cell.colorHolder.bounds.size.height的值始终为1000.如何在将其呈现到屏幕后提取正确的值?

输出:

enter image description here

如何为UITableViewCell添加可配置的圈子?

3 个答案:

答案 0 :(得分:0)

我认为你的设置colorbutton约束就像 topspace到superview和bottomomspace到superView。

如果是这种情况,请将底部空间移除到superView并添加高度约束。

比这个

cell.colorHolder.layer.cornerRadius = cell.colorHolder.bounds.size.height / 2
cell.colorHolder.clipToBounds = true

,它应显示为圆圈。

希望这能解决您的问题

答案 1 :(得分:0)

只需覆盖layoutSubviews并在那里设置你的角落半径。

- (void)layoutSubviews {
   [super layoutSubviews];
   self.colorHolder.layer.cornerRadius = self.colorHolder.bounds.size.height / 2;
}

答案 2 :(得分:0)

为了完成起见,在这里发布答案。 我必须在访问边界之前添加foreach (IEnumerable<TabItem> item in tabControlList) { if (item.Header== "AddRskAreas") { item.IsSelected = true; } else { MessageBox.Show("Tab not found"); } } )。 这post帮助了我。

self.layoutIfNeeded(