ボタンを押すと、ナビゲーションバーを非表示にするView Controllerがあります
[self.navigationController setNavigationBarHidden:true animated:YES];
その場所に別のビューを表示します。
ナビゲーション バーを非表示にすると、非表示にしないとその上にビューを配置できないように見えるためです。
とにかく、ナビゲーションバーを非表示にした後、すべてのサブビューが上に移動したことに気付いたので、すべてのサブビューに対して次のことを行いました
// shift subviews down b/c of offset
CGRect categorizationSearchBarFrame = _categorizationSearchBar.frame;
categorizationSearchBarFrame.origin.y += IOS_7_OFFSET;
_categorizationSearchBar.frame = categorizationSearchBarFrame;
CGRect collectionViewFrame = _collectionView.frame;
collectionViewFrame.origin.y += IOS_7_OFFSET;
_collectionView.frame = collectionViewFrame;
他のView Controllerに移動するときに、ナビゲーションバーを再表示し、「ナビゲーション非表示状態」を保存することを思い出しました。これにより、戻ってくる状態を再現できます。
ただし、戻ってきて「隠れた状態」を検出すると
viewWillAppear
同じ再表示、オフセット手順を実行すると、サブビューは依然として上にシフトしているように見えます。
復元コードを入れたときだけ
viewDidAppear
状態が正しく復元されますか。しかし、ビューは既に画面に表示されているため、結果として厄介な問題が発生します。オフセットの変更を行う前に、ビューを表示する必要がありますか? これについて誰かの意見が欲しいです。ありがとうございました。