viewdidlayoutsubviews 何时调用 和navigationBar.subviews问题

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是否为空

你可能感兴趣的:(viewdidlayoutsubviews 何时调用 和navigationBar.subviews问题)