[英]Why is init(frame: CGRect) not being called in my custom UIView class?
我有一个名为GradientView
的UIView
子类,正在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.