2

ボタンを押すと、ナビゲーションバーを非表示にする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

状態が正しく復元されますか。しかし、ビューは既に画面に表示されているため、結果として厄介な問題が発生します。オフセットの変更を行う前に、ビューを表示する必要がありますか? これについて誰かの意見が欲しいです。ありがとうございました。

4

0 に答える 0