将UITableViewCell设置为特定百分比

时间:2017-01-20 11:49:33

标签: swift uitableview swift2 background-color uicolor

我有一个应用测验应用程序分为不同的类别。可以在UITableView中看到类别,例如A类,B类,C类......等。我试图通过着色类别UITableView单元格的背景来显示已在UITableView中作为可视化表示回答的问题的百分比。

例如,如果此人已经完成了类别A中75%的问题,我希望UITableView中类别A的背景从左到右以75%的单元格背景颜色显示为绿色。 / p>

唯一的方法是知道如何做绿色背景的背景图像,并根据回答的问题的百分比将相关的背景图像作为细胞背景的背景。

有更简单的方法吗?我可能会使用像

这样的东西
Cell.backgroundcolor = UIColor.greencolor().75%ofCell.

我知道这段代码不正确,但有点了解我想要做的事情。

3 个答案:

答案 0 :(得分:1)

我认为你可以在不使用图层添加视图的情况下执行此操作:

在您的单元格类中,您可以添加以下功能:

func addGradientLayer(percentage: Double) {
   let color1 = UIColor.green
   let color2 = UIColor.clear

   let gradientLayer = CAGradientLayer()
   // sets the gradient frame as the bounds of your cell
   gradientLayer.frame = bounds 

   gradientLayer.colors = [color1.cgColor, color2.cgColor]

   // tells the gradient to go from left to right
   gradientLayer.startPoint = CGPoint(x: 0.0, y: 0.5) 
   gradientLayer.endPoint = CGPoint(x: 1.0, y: 0.5)

   //this line is the important one: as 
   //long the second Double is smaller than 
   //your percentage, you will not get a gradient 
   //but a clear separation between your two colors.
   gradientLayer.locations = [percentage, 0.0]

   layer.addSublayer(gradientLayer)
}

然后,您可以在awakeFromNib()方法或cellForRowAt(tableView委托)中调用此方法:

tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
   ...
   cell.addGradientLayer(percentage: 0.8)
}

答案 1 :(得分:0)

假设您正在使用故事板,请将UIView backgroundColor = .greenColor()添加到单元格

为视图添加等于超视图的顶部,左侧和底部约束,然后为视图添加宽度约束并为其创建插座。

然后在单元格中你可以说:

var pctScore: CGFloat {
   didSet {
       let viewWidth = cell.contentView.frame.width * pctScore
       widthConstraint.constant = viewWidth
   }
}

答案 2 :(得分:-1)

您可以将UIView作为子视图添加到单元格中,并使UIView的背景颜色成为您想要的颜色。

在添加视图之前,您将视图宽度设置为0.75 * cellWidth。