我正在尝试在iOS8中使用命令来启用滚动时隐藏导航栏的行为。
这是代码
-(void)viewDidAppear:(BOOL)animated
{
self.navigationController.hidesBarsOnSwipe = YES;
}
当快速向上滚动时,没有问题,因为导航栏会被拖动并自动显示。但即使我慢慢向上滚动到顶部。导航栏不显示。
我尝试使用scrollView委托更正此行为。但这也行不通。因为动画看起来不太好看。
-(void)scrollViewDidScroll:(UIScrollView *)scrollView
{
if(floor(NSFoundationVersionNumber) >= NSFoundationVersionNumber_iOS_8_0)
{
float scrollOffset = scrollView.contentOffset.y;
if (scrollOffset < 10)
{
self.navigationController.navigationBarHidden = NO;
}
}
}
请帮忙。我想尽可能简单地做到这一点。提前致谢
答案 0 :(得分:2)
要显示它何时到达顶部,请使用以下
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
if indexPath.row == 0 {
self.navigationController?.hidesBarsOnSwipe = false
self.navigationController?.setNavigationBarHidden(false, animated: true)
}
else {
self.navigationController?.hidesBarsOnSwipe = true
}
答案 1 :(得分:2)
我刚遇到同样的问题。
当我使用hidesBarsOnSwipe
UINavigationController
属性时。
滚动/滑动时我无法再显示它。
在我的情况下,我使用 UIScrollView
,而scrollview的顶部是Aling to SafeArea.Top
我刚刚将scrollview的顶部更改为
SuperView.Top
,并且其工作正常。
感谢。
答案 2 :(得分:1)
我有一个UIScrollView,顶部有正确的约束,但它的行为仍然很奇怪。
我这样解决了:
-(void)scrollViewDidScroll: (UIScrollView*)scrollView
{
float scrollViewHeight = scrollView.frame.size.height;
float scrollContentSizeHeight = scrollView.contentSize.height;
float scrollOffset = scrollView.contentOffset.y;
if (scrollOffset < 0)
{
self.navigationController.hidesBarsOnSwipe = NO;
[self.navigationController setNavigationBarHidden:NO animated: YES];
}
else
{
self.navigationController.hidesBarsOnSwipe = YES;
}
}