gpt4 book ai didi

ios - 如何在 UITableViewCell 上使用 CAGradientLayers

转载 作者:行者123 更新时间:2023-11-30 12:16:47 25 4
gpt4 key购买 nike

我在 UITableViewCells 上使用 CAGradientLayers 时遇到问题。我试图做的是模拟 actionsForRowAtIndexPath 的功能,但我想使用自定义操作 View ,而不仅仅是设置背景颜色。

所以,我的行动计划是在我的 UITableViewCell 中,我布置了一个 UIView(操作 View ),它隐藏在另一个 UIView(主要内容 View )下方,这两个 UIView 都位于 UITableViewCell 的默认 contentView 中。

因此,在我的“cellForRowAt”tableView 函数中,我有以下代码:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

let cell = tableView.dequeueReusableCell(withIdentifier: "CustomTableViewCell", for: indexPath) as! CustomTableViewCell

// Set Up Gradient
let actionGradient = CUSTOM_GRADIENTS.blueToGreen!
actionGradient.frame = cell.actionView.frame

// Add Gradient to ActionView
cell.actionView.insertSubLayer(actionGradient, at: 0)

return cell
}

仅供引用,我的 CUSTOM_GRADIENTS 是一个在 ApplicationDelegate 中初始化的类:

class safeGradiants {

var blueToGreen: CAGradientLayer!

init() {

self.blueToGreen = CAGradientLayer()
self.blueToGreen.colors = [UIColor.blue, UIColor.]
self.blueToGreen.startPoint = CGPoint(x: 0.0, y: 0.5)
self.blueToGreen.endPoint = CGPoint(x: 1.0, y: 0.5)
}
}

发生错误的地方是当我的tableView加载时,唯一具有渐变的单元格是 TableView 中的最后一个单元格。我只能推测这与细胞的重复利用有关,但我一生都无法弄清楚如何解决它。

关于我需要做什么才能让这个渐变显示在所有单元格的 actionView 上,有什么想法吗?

最佳答案

经过一番困惑之后,我发现我的问题出在我的 safeGradients 类上。由于我使用该类的一个全局实例,因此我无法重用相同的变量 blueToGreen。

解决此问题的方法不是创建一个类并拥有该类的一个全局实例,而是创建托 pipe 类函数的 CAGradientLayer 扩展。换句话说,我更改了这段代码:

class safeGradiants {

var blueToGreen: CAGradientLayer!

init() {

self.blueToGreen = CAGradientLayer()
self.blueToGreen.colors = [UIColor.blue, UIColor.]
self.blueToGreen.startPoint = CGPoint(x: 0.0, y: 0.5)
self.blueToGreen.endPoint = CGPoint(x: 1.0, y: 0.5)
}
}

进入这段代码:

extension CAGradientLayer {

class var blueToGreen: CAGradientLayer {
let blueToGreen = CAGradientLayer()
blueToGreen.colors = [UIColor.blue, UIColor.green]
blueToGreen.startPoint = CGPoint(x: 0.0, y: 0.5)
blueToGreen.endPoint = CGPoint(x: 1.0, y: 0.5)
return blueToGreen
}
}

关于ios - 如何在 UITableViewCell 上使用 CAGradientLayers,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45339336/

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