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