如何从单元格的 awakeFromNib() 方法中将 CAGradientLayer 添加到表格视图中的单元格?
How can you add a CAGradientLayer to a cell in a tableview from within the cells' awakeFromNib() method?
我一直在使用以下代码向单元格添加 CAGradient 层:
let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as myCell
cell.mImageView.image = UIImage(named: scripts[indexPath.row].thumbnailImage)
let gradientLayer = CAGradientLayer()
if(cell.layer.sublayers.count == 2){ //This is to stop stacking gradient layers
gradientLayer.colors = [UIColor.clearColor().CGColor, UIColor.blackColor().CGColor]
gradientLayer.locations = [0.6, 1.0]
gradientLayer.frame = cell.bounds
cell.layer.insertSublayer(gradientLayer, below: cell.mImageView.layer)
}
这是来自我的 CustomTableViewController class.
的 tableView(_:cellForRowAtIndexPath) 方法中的
我有一个 myCell
class,我更愿意用它来执行渐变布局,但我不能使用此代码或 [=13] 中的 cell
对象=]方法。
如何从 myCell class 的 awakeFromNib
(或 init()
)方法中插入这个 CAGradientLayer?该单元格还包含一个标签,我也想将其插入标签下方。
我不知道你为什么会收到那个错误。我尝试对您的代码稍作修改(在 class 单元格中),并且它工作正常。在这里,
class RDTableViewCell: UITableViewCell {
@IBOutlet var mImageView: UIImageView!
override func didMoveToSuperview() {
let gradientLayer = CAGradientLayer()
gradientLayer.colors = [UIColor.clearColor().CGColor, UIColor.blackColor().CGColor]
gradientLayer.locations = [0.6, 1.0]
gradientLayer.frame = self.bounds
self.layer.insertSublayer(gradientLayer, below: self.mImageView.layer)
}
}
我假设您想要单元格底部的渐变,如果我将代码放在 awakeFromNib 中,我的单元格(高度为 70)不会发生这种情况。
我一直在使用以下代码向单元格添加 CAGradient 层:
let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as myCell
cell.mImageView.image = UIImage(named: scripts[indexPath.row].thumbnailImage)
let gradientLayer = CAGradientLayer()
if(cell.layer.sublayers.count == 2){ //This is to stop stacking gradient layers
gradientLayer.colors = [UIColor.clearColor().CGColor, UIColor.blackColor().CGColor]
gradientLayer.locations = [0.6, 1.0]
gradientLayer.frame = cell.bounds
cell.layer.insertSublayer(gradientLayer, below: cell.mImageView.layer)
}
这是来自我的 CustomTableViewController class.
的 tableView(_:cellForRowAtIndexPath) 方法中的我有一个 myCell
class,我更愿意用它来执行渐变布局,但我不能使用此代码或 [=13] 中的 cell
对象=]方法。
如何从 myCell class 的 awakeFromNib
(或 init()
)方法中插入这个 CAGradientLayer?该单元格还包含一个标签,我也想将其插入标签下方。
我不知道你为什么会收到那个错误。我尝试对您的代码稍作修改(在 class 单元格中),并且它工作正常。在这里,
class RDTableViewCell: UITableViewCell {
@IBOutlet var mImageView: UIImageView!
override func didMoveToSuperview() {
let gradientLayer = CAGradientLayer()
gradientLayer.colors = [UIColor.clearColor().CGColor, UIColor.blackColor().CGColor]
gradientLayer.locations = [0.6, 1.0]
gradientLayer.frame = self.bounds
self.layer.insertSublayer(gradientLayer, below: self.mImageView.layer)
}
}
我假设您想要单元格底部的渐变,如果我将代码放在 awakeFromNib 中,我的单元格(高度为 70)不会发生这种情况。