我有一个应用测验应用程序分为不同的类别。可以在UITableView中看到类别,例如A类,B类,C类......等。我试图通过着色类别UITableView单元格的背景来显示已在UITableView中作为可视化表示回答的问题的百分比。
例如,如果此人已经完成了类别A中75%的问题,我希望UITableView中类别A的背景从左到右以75%的单元格背景颜色显示为绿色。 / p>
唯一的方法是知道如何做绿色背景的背景图像,并根据回答的问题的百分比将相关的背景图像作为细胞背景的背景。
有更简单的方法吗?我可能会使用像
这样的东西Cell.backgroundcolor = UIColor.greencolor().75%ofCell.
我知道这段代码不正确,但有点了解我想要做的事情。
答案 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。