我在tableViewCell中有一个视图有问题。所以我有一个tableViewCell,里面我有一个叫做“容器视图”的UIView。现在我希望containerView的背景是从浅灰色到深灰色的渐变。在下面的代码中,您可以看到我如何设置图层和所有内容,但由于某种原因,带有渐变的“backgroundColor”向右和向下略微偏移。希望你能帮我解决这个问题,这是我第一次使用渐变,请耐心等待:D
import UIKit
class customCell: UITableViewCell {
@IBOutlet var containerView: UIView!
override func awakeFromNib() {
super.awakeFromNib()
// Initialization code
let layerView = UIView()
layerView.layer.frame = containerView.layer.frame
let layer = CAGradientLayer()
layer.frame = containerView.layer.frame
layer.colors = [UIColor.lightGrayColor().CGColor, UIColor.darkGrayColor().CGColor]
layerView.layer.addSublayer(layer)
containerView.addSubview(layerView)
containerView.sendSubviewToBack(layerView)
}
}
答案 0 :(得分:2)
这就是我将渐变颜色指定为自定义单元格的背景
的方法let startingColorOfGradient = UIColor(colorLiteralRed: 217/255, green: 90/255, blue: 57/255, alpha: 1.0).CGColor
let endingColorOFGradient = UIColor(colorLiteralRed: 227/255, green: 214/255, blue: 42/255, alpha: 1.0).CGColor
let gradient: CAGradientLayer = CAGradientLayer()
gradient.frame = bounds
gradient.startPoint = CGPoint(x: 0.5, y: 0.0)
gradient.endPoint = CGPoint(x: 0.5, y:1.0)
gradient.colors = [startingColorOfGradient , endingColorOFGradient]
// backGroundView is a View I have placed on my cell as container
self.backGroundView.layer.insertSublayer(gradient, atIndex: 0)
答案 1 :(得分:2)
以下代码将指定渐变颜色以查看背景。
CAGradientLayer *gradient = [CAGradientLayer layer];
gradient.frame = self.view.bounds;
gradient.colors = [NSArray arrayWithObjects:(id)[[UIColor colorWithRed:38/255.0 green:154/255.0 blue:255.0/255.0 alpha:1] CGColor], (id)[[UIColor colorWithRed:30/255.0 green:88/255.0 blue:151/255.0 alpha:1] CGColor], nil];
[self.view.layer insertSublayer:gradient atIndex:0];
答案 2 :(得分:0)
这是我如何将渐变层添加到canvasView(UIView)背景。 UIView的背景应该是清楚的。
func addGradient(color:UIColor){
let gradient:CAGradientLayer = CAGradientLayer()
gradient.frame.size = self.canvasView.frame.size
gradient.colors = [color.cgColor,color.withAlphaComponent(0).cgColor] //Or any colors
self.canvasView.layer.addSublayer(gradient)
}