我试图在 UITableview 单元格中获取我的一个子视图的宽度。下面是故事板布局。在这里,我试图以编程方式获取 testView 宽度。
这是我的单元班。
class MyTableViewCell: UITableViewCell {
@IBOutlet weak var testView: UIView!
@IBOutlet weak var testLabel: UILabel!
override func awakeFromNib() {
super.awakeFromNib()
print("Width = \(testView.frame.width)")
}
override func layoutSubviews() {
print("Updated Width = \(testView.frame.width)")
testLabel.text = "Testview Frame width is =\(testView.frame.width)"
//Perform calculation based on width
}
}
现在的问题是我第一次没有得到正确的宽度,只要我执行一些操作,比如单击单元格,我就会在 layoutSubviews 中得到更新的正确宽度。例如:当我在 iPhone SE 上运行它时,预期的宽度是 320,但最初,我得到了故事板中设置的值,在这种情况下,它是 414。
UITableviewCell 中还有其他方法可以获取视图的实际宽度吗?
如果我添加一个延迟为 0.1 秒的计时器,我也可以让它工作,但这似乎是一个 hack,想知道是否有其他方法。
Timer.scheduledTimer(timeInterval: 0.1, target: self, selector: #selector(self.update), userInfo: nil, repeats: false)
@objc func update() {
print("Width = \(testView.frame.width)") //Works fine
testLabel.text = "Testview Frame width is =\(testView.frame.width)"
}