iOS7隐藏导航栏偏移问题

时间:2013-11-12 04:25:44

标签: ios iphone uinavigationcontroller ios7 uinavigationbar

我有一个视图控制器,按下按钮后,使用

隐藏导航栏
[self.navigationController setNavigationBarHidden:true animated:YES];

并显示我取消隐藏的另一个视图。

prior to hiding

我隐藏了导航栏,因为看起来我无法取消隐藏任何视图。

after hiding and putting view in front

无论如何,我注意到隐藏导航栏后所有子视图都向上移动了,所以我为所有子视图做了以下操作

// 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

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

subviews still seems to be shifted upwards even after running code to shift them down

仅当我将恢复代码放入

viewDidAppear

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

0 个答案:

没有答案