我有一个视图控制器,在按下按钮时,通过使用隐藏导航栏
[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
状态是否正确恢复。但是由于该视图已经出现在屏幕上,因此会出现一个令人讨厌的故障。在进行任何偏移更改之前是否必须显示视图?希望有人对此提出意见。谢谢你。