美文网首页
layoutSubviews 不执行的问题

layoutSubviews 不执行的问题

作者: zhonglaoban | 来源:发表于2020-07-01 17:22 被阅读0次

    问题:

    遇到了layoutSubviews在调用几次后就不执行的问题

    调试过程:

    查找layoutSubviews的调用时机
    1、init初始化不会触发layoutSubviews

    2、addSubview会触发layoutSubviews

    3、设置view的Frame会触发layoutSubviews,当然前提是frame的值设置前后发生了变化

    4、滚动一个UIScrollView会触发layoutSubviews

    5、旋转Screen会触发layoutSubviews

    6、改变自身大小或者子view大小的时候也会触发layoutSubviews(改变frame不会)

    7、在调用了setNeedsLayout()和layoutIfNeeded()也会触发layoutSubviews

    在layoutSubviews打印日志发现,我的view在触发两次layoutSubviews后就没了。
    通过不断的注释代码发现原来是在layoutSubviews中改变了自己frame,暂时没有找到根本原因。

    结论:

    在iOS的view层级中,遵循superview管理subview的frame的逻辑,不要瞎搞。

    注意事项

    1、在iOS13中,改变子视图的frame会触发控制器的viewWillLayoutSubviews事件,在iOS12中不会。

    相关文章

      网友评论

          本文标题:layoutSubviews 不执行的问题

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