美文网首页
iOS viewDidLoad 和viewWillAppear

iOS viewDidLoad 和viewWillAppear

作者: 包砸豆沙馅 | 来源:发表于2019-11-19 20:42 被阅读0次
    • 问题: 这几天在做一个简单的列表页面, 表头配置banner. HeaderView是从nib中读取的, 我在viewDidLoad的时候 去读取HeaderView 然后将banner设置为HeaderView的子视图, 然后去配置Banner的CollectionViewFlayout(配置ItemSize, ItemSize跟self.view的宽度有关). 程序跑起来的时候才发现, 显示出来的banner大小跟self.view的大小完全没有关系.


      viewDidLoad中配置flayout
      viewDidLoad中配置flayout
    • 原因:在viewDidLoad的时候, 子视图还没有完全的layout, 还没有调用viewWillLayoutSubview和viewDidLayoutSubview方法, 以至于在viewDidLoad的时候, self.view的大小, 是在nib中画布的大小, 所以从nib中直接读取之后 加在tableView的 headerView上面 就会出现错乱.

    • 解决: 在viewDidLoad中 只进行视图的加载, 初始化, 不要进行有关frame的计算. 将frame的计算相关方法 放在viewWillAppear 或者 viewDidAppear中进行. 在viewWillAppear方法中可以进行显示的控制, 只用在第一次appear的时候 进行layout的配置, 以免多次计算frame 浪费性能或者出现其他不必要的bug.


      配置好 正常的显示

    相关文章

      网友评论

          本文标题:iOS viewDidLoad 和viewWillAppear

          本文链接:https://www.haomeiwen.com/subject/ypbgictx.html