gpt4 book ai didi

ios - 在 UITableViewCell 中使用时,CAGradientLayer 在 UIView 上溢出

转载 作者:搜寻专家 更新时间:2023-10-31 19:32:17 25 4
gpt4 key购买 nike

我已将 CAGradientLayer 添加到 UITableViewCell 中已有的 UIView。此 UIView 从 UITableViewCell contentView 开始有 20 个 trailingleading 空间。但是那个 UIView 在运行时会溢出。

var gradientLayer: CAGradientLayer!

@IBOutlet weak var view: UIView!

func createGradientLayer() {
gradientLayer = CAGradientLayer.init(layer: view.layer)
gradientLayer.frame = CGRect(x: 0, y: 0, width: self.view.frame.size.width, height: self.view.frame.size.height)
// gradientLayer.frame = CGRect(x: 0, y: 0, width: self.contentView.frame.size.width, height: )

let colory: UIColor = UIColor(red: 0, green: 189/255, blue: 237/255, alpha: 1.0)

gradientLayer.colors = [UIColor.ceruleanBlue.cgColor, colory.cgColor]

gradientLayer.startPoint = CGPoint.init(x: 0.0, y: 0.5)
gradientLayer.endPoint = CGPoint(x:1.0,y: 0.5)

// self.view.layer.mask = gradientLayer
self.view.layer.insertSublayer(gradientLayer, at: 0)
}

然后在 cellForRow 方法中,我这样使用:

if indexPath.row == 0{
let cell = tableView.dequeueReusableCell(withIdentifier: "statisticsCell") as! StatisticsCommentCell

// cell.frame.size.width = UIScreen.main.bounds.size.width
cell.view.translatesAutoresizingMaskIntoConstraints = false
return cell
}

如果我像下面这样更改 gradientLayer.frame:

gradientLayer.frame.size.width = self.view.frame.width

gradientView 没有溢出,但似乎只有 ceruleanBlue 颜色。

我不知道如何为我的 UIView 解决这个问题。

有什么想法吗?提前致谢。

模拟器有溢出问题的截图:

提示:通常 UIView 已经位于 UITableViewCellcontentView 的尾部和前部。

enter image description here

另一个问题是当我添加 maskToBounds 时, View 如下所示

enter image description here

UIView的所有约束

enter image description here

最佳答案

将您的 gradientLayer 设置为可选,而不是 var gradientLayer: CAGradientLayer! 使用 var gradientLayer: CAGradientLayer? 并将此代码添加到您的 cellLayoutSubViews 方法中

使用此代码

override func layoutSubviews() {
super.layoutSubviews()
if(self.gradientLayer == nil){
self.gradientLayer = CAGradientLayer(layer: self.view.layer)
//your gradient configuration
self.layer.addSublayer(self.gradientLayer!)
}
self.gradientLayer?.drawsAsynchronously = true
self.gradientLayer?.frame = self.view.bounds
}

关于ios - 在 UITableViewCell 中使用时,CAGradientLayer 在 UIView 上溢出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49571017/

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