layoutSubviews在以下情况下会被调用:
1、init初始化不会触发layoutSubviews
2、addSubview会触发layoutSubviews
3、设置view的Frame会触发layoutSubviews,当然前提是frame的值设置前后发生了变化
工作中遇到一个问题 是关于UINavigationBar 的subviews的问题。我是在viewdidlayoutsubviews 方法里去做了改变我在navBar上自定义的一个view的透明度等于navbar.subviews.firstObject的透明度。
这时候 我发现有些页面改变了,有些页面没改变。
测试打印出 navbar.subviews 在viewDidLoad,viewWillAppper 和 viewdidlayoutsubviews第一次调用的时候都为空 也就是说在viewDidApper之前 navbar.subviews 都是空的。如果某些页面 在viewDidApper及之后 再次触发调用viewdidlayoutsubviews则就可以正确显示。
所以在做某些判断的时候一定要注意 navigationBar.subviews是否为空