繁体   English   中英

为什么在我的自定义UIView类中未调用init(frame:CGRect)?

[英]Why is init(frame: CGRect) not being called in my custom UIView class?

我有一个名为GradientViewUIView子类,正在UITableViewCell

layoutSubviews()被调用,但从未调用我的init方法。

import UIKit

class GradientView: UIView {

var gradientLayer = CAGradientLayer()

    override init(frame: CGRect) {

        super.init(frame:frame)

        self.backgroundColor = .orange
        gradientLayer.colors = [UIColor.clear.cgColor, UIColor.black.cgColor]
        gradientLayer.locations = [0.6, 1.0]
        gradientLayer.frame = self.bounds
        self.layer.insertSublayer(gradientLayer, at: 0)
    }

    override func layoutSubviews() {
        super.layoutSubviews()

        self.gradientLayer.frame = self.bounds
    }

    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
    }

}

我想念什么?

UITableViewCell通常不使用init(frame:)初始化,而是使用init(style: UITableViewCellStyle, reuseIdentifier: String?)required init?(coder aDecoder: NSCoder)

当您在表格视图中注册一个类时,将使用第一个,而从情节提要中初始化该类或在表格视图中注册一个xib文件时,将使用第二个。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM