【问题标题】:SWIFT: CAGradientLayer not shown property in TableViewCell programmaticallySWIFT:CAGradientLayer 未以编程方式在 TableViewCell 中显示属性
【发布时间】:2021-05-28 16:05:02
【问题描述】:

我在 tableViewCell 中的 CAGradientLayer 看起来像这样。我没有使用 xib 或情节提要,如何应用图层。覆盖框架?

override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
        super.init(style: style, reuseIdentifier: reuseIdentifier)
    //awakefromnib wont work if programmatically
    selectionStyle = .none
    backgroundColor = .black
    self.setupView()
 }

override func didMoveToSuperview() {
    self.setupGradientlayer()    
}

fileprivate func setupGradientlayer() {
    gradientlayer.frame = self.bounds

    gradientlayer.colors = [UIColor.clear.cgColor, UIColor.secBlack().withAlphaComponent(0.7).cgColor]
    gradientlayer.locations = [0.4, 1]
    
    layer.insertSublayer(gradientlayer, above: self.userImg.layer)
}


override func awakeFromNib() {
    super.awakeFromNib()
    //empty since I'm not using xib or storyboard.  only code programmatically
}

【问题讨论】:

  • 用draw rect override func draw(_ rect: CGRect) { super.draw(rect) gradientlayer.frame = self.boundss }更新你的框架

标签: swift uitableview cagradientlayer


【解决方案1】:

使用override func draw(_ rect: CGRect)这个方法来更新你的图层框架。每次更改单元格框架时都会调用此方法。

override func draw(_ rect: CGRect) {
        super.draw(rect)
        gradientlayer.frame = self.boundss
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-09
    • 2018-03-13
    相关资源
    最近更新 更多