我UITableViewController
内有navigationController
。当我滚动navigationBar
时,我的代码会隐藏frame.origin.y
(将其tableView
设置为负值,从而将其发送到屏幕外)。 navigationBar
已成功隐藏,但当我通过点按主页按钮离开应用程序然后将应用程序启动到前台时,导航栏在frame.origin
处返回(20, 0)
(x = 20)由于状态栏可见,并且tableView
按下屏幕(纵向显示frame.origin
返回(64, 0)
)。
有关如何防止navigationBar
重新出现在应用程序进入前台的任何想法将非常感激。
答案 0 :(得分:0)
您可以使用以下代码隐藏导航栏,而不是设置框架。
[self.navigationController setNavigationBarHidden:YES];
希望这会对你有所帮助。快乐的编码:)
答案 1 :(得分:0)
我认为您没有选择隐藏navigationBar的最佳做法,因为大多数"内部视图"自动定位它的超级视图。问题是当你滚动时,navigationBar被移出屏幕......但是当应用程序进入前景时,所有视图都被放置(结帐UIView setNeedsLayout和layoutSubviews)并且这会将novigationBar移回到它的位置属于(y = 0)。您可以使用其他几个选项:
1)在viewWillAppear:和viewWillDisappear:中使用UINavigationController的setNavigationBarHidden :(动画:):更多信息SO: how to hide navigationbar when i push from navigation controller?
2)如果你想留下导航栏使用的空间(在viewDidLoad或#1中的方法):
self.navigationController.navigationBar.alpha = 0;
3)移动您的代码以在您的控制器的方法viewDidLayoutSubviews中设置框架(iOS 5+)。每次在UITableViewControler中滚动时,都会调用layoutSubviews方法(以及viewDidLayoutSubviews)。但我不推荐这个解决方案。