2017-06-02 11 views
0

私のカスタムUINavigationControllerサブクラスのUINavigationBarの高さを手動で変更しています。何らかの理由で、viewDidAppear関数の高さを変更するためのコードを追加すると、バーの高さが正しく変更されますが、viewDidLoadにコードを入力しても何も起こりません。私がそれをやっているところは次のとおりです。UIの変更は、viewDidAppearでのみ機能しますか?

class PetNavigationVC: UINavigationController { 

    override func viewDidLoad() { 
     super.viewDidLoad() 
    } 

    override func viewDidAppear(_ animated: Bool) { 
     let bounds = self.navigationBar.bounds 
     self.navigationBar.frame = CGRect(x: 0, y: 0, width: bounds.width, height: 74) 

    } 
} 

これがなぜこのような場合に理解できますか?

+1

:ユーザーがdemantに右何が起こっているかを見ることができるのでまたのviewDidLoadにコードを追加することは、あまりにも少し注意が必要ですviewDidLoad()では、nslayoutの制約などはまだ計算されていません。 uiviewコンポーネントはメモリにロードされ、xibまたはストーリーボードからインスタンス化されていますが、まだレイアウトされていません。 – onnoweb

答えて

0

コメントで述べたように、viewDidLoadメソッドでは、制約は計算されず、クラス値以外は実際には何もロードされません。 D

あなたはviewWillAppearのFUNC中またはメソッドDidLayoutSubviewsであなたのフレームまたは任意のUI関連のものを調整する必要があります...

関連する問題