gpt4 book ai didi

ios - CAGradientLayer 无法正常工作

转载 作者:行者123 更新时间:2023-12-01 18:41:26 25 4
gpt4 key购买 nike

我正在尝试创建一个具有渐变背景的 UITableViewCell。我不明白为什么,但 UITableView 的右侧有一个空白区域。我尝试通过设置纯色但结果没有改变。

这是我的 UITableViewCell 类。

class HomeTableViewCell: UITableViewCell {

override func awakeFromNib() {
super.awakeFromNib()
// Initialization code

let gl = CAGradientLayer()
gl.frame = self.bounds
//gl.colors = [UIColor.red.cgColor as CGColor, UIColor.red.cgColor as CGColor]
gl.backgroundColor = UIColor.blue.cgColor
self.layer.addSublayer(gl)
}

override func setSelected(_ selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)

// Configure the view for the selected state
}
}

它看起来像这样。 (蓝色的是表格行)
enter image description here

怎么了?如果我从 XCode 设置背景,它会显示一切正常。它只是不适合屏幕尺寸。

最佳答案

问题是单元格以一种大小从 Nib 出来,但随后在放入界面时调整大小。但是您的图层比单元格调整大小要早得多,并且在调整单元格大小时不会调整图层大小。因此,该层以错误的大小结束。

这里的一个好方法是保留对渐变层的引用并将层的大小设置为 layoutSubviews覆盖:

class MyTableViewCell : UITableViewCell {

var gl : CAGradientLayer?

override func awakeFromNib() {
super.awakeFromNib()
// Initialization code

let gl = CAGradientLayer()
gl.frame = self.bounds
gl.colors = [UIColor.red.cgColor, UIColor.blue.cgColor]
gl.zPosition = -1
self.layer.addSublayer(gl)
self.gl = gl
}

override func layoutSubviews() {
super.layoutSubviews()
self.gl?.frame = self.bounds
}
}

enter image description here

enter image description here

关于ios - CAGradientLayer 无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42463310/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com