2

我有一个视图控制器,在按下按钮时,通过使用隐藏导航栏

[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;

我记得在导航到其他视图控制器时取消隐藏导航栏并存储“导航隐藏状态”,这样我就可以重新创建返回的状态。

但是,当我回来并检测到“隐藏状态”时

viewWillAppear

并继续执行相同的取消隐藏、偏移过程,子视图似乎仍然向上移动。

即使在运行代码将它们向下移动之后,子视图似乎仍然向上移动

只有当我输入恢复代码时

viewDidAppear

状态是否正确恢复。但是由于该视图已经出现在屏幕上,因此会出现一个令人讨厌的故障。在进行任何偏移更改之前是否必须显示视图?希望有人对此提出意见。谢谢你。

4

0 回答 0