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

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里如何获取到真实的宽度?

阅读 6k
1 个回答

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题