0

我试图在 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)"
    }
4

0 回答 0