UITableViewCell里init方法和layoutSubviews方法里宽度不一样

紫川_444868
  • 181
class CategoryCell: UITableViewCell {
   
    override init(style: UITableViewCellStyle, reuseIdentifier: String?) {
        super.init(style: style, reuseIdentifier: reuseIdentifier)
        print(self.bounds.size.width);
    }


    override func layoutSubviews() {
        print("===== layoutsub =======");
        print(self.bounds.size.width);
    }
    
    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
    
    

}

init方法里和layoutSubviews方法里都有一段输出view宽度的方法,
但是在init里输出的是320, 在layoutSubviews输出的是375,
这是什么原因?
导致我再init里布局的时候右边少了50像素。。。如果在layoutSubviews里布局就是正常填满的。

clipboard.png

在init里如何获取到真实的宽度?

回复
阅读 5k
1 个回答

init里只是初始化一个值啊,根据不同的屏幕尺寸还有动态调整要动态布局的啊。init里面你不应该布局UI,init里只创建view就好了,先不用管它显示在什么地方,在layoutSbviews里在布局,这才是标准做法。

宣传栏