我想在向下滚动页面时隐藏工具栏和导航栏.当我向上滚动时返回它.这怎么可能?
我该如何检测阻力?我是否使用平移手势或滚动视图?
在Safari中滚动内容时,标题栏会动画显示其自身的较小版本.实现这个的最佳方法是什么?
目前,我正在改变框架的大小,如下所示:
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
//
// Table view
//
CGFloat currentPosition = scrollView.contentOffset.y - CGRectGetHeight(self.tableView.tableHeaderView.frame) + CGRectGetHeight(self.navigationController.navigationBar.frame) + CGRectGetHeight([[UIApplication sharedApplication] statusBarFrame]);
if ([scrollView isKindOfClass:[HeadlinesHeadlinesTableView class]]) {
ScrollDirection scrollDirection;
if (self.lastContentOffset > scrollView.contentOffset.y) {
scrollDirection = ScrollDirectionDown;
} else if (self.lastContentOffset < scrollView.contentOffset.y) {
scrollDirection = ScrollDirectionUp;
}
self.lastContentOffset = scrollView.contentOffset.y;
CGRect frame = self.navigationController.navigationBar.frame;
CGFloat minimumFrameHeight = 30.0f;
CGFloat maximumFrameHeight = 44.0f;
CGFloat titleSize = [[self.navigationController.navigationBar.titleTextAttributes objectForKey:NSFontAttributeName] pointSize];
CGFloat minimumTitleHeight = 22.0f;
CGFloat maximumTitleHeight = 30.0f;
if (currentPosition …Run Code Online (Sandbox Code Playgroud) 如果你正在解决这个问题,GTScrollNavigationBar接近现成的navBar问题解决方案!
这里50点恩惠,惊人的没有答案.
例如:在2014年的iPhone上,打开Safari,加载任何网页.
查看底部的iOS工具栏.
现在只需移动几个像素就可以上下移动手指.

基本上底部的工具栏会随着手指移动.此外,当您按照特定逻辑滚动页面时,工具栏稍后会出现/消失.
但是交互规则非常复杂,并且在隐藏期间涉及手指开/关,距离匹配,当您在页面下方时的手势,非常短页面的特殊情况等等.
我想要完全复制Apple的行为.
(我们应该与Apple UX相匹配似乎是明智的.)
有没有办法做到这一点?Apple是否为此提供了一个一步的命令,我不知道?或者您是否必须费力地复制这个概念?
谢谢.
顺便说一句,以下逻辑是可靠的,并将大致复制 Apple的方式:
-(void)feedIsScrolled:(CGFloat)scrollNewOverallYPosition
{
// call this routine when scrollViewDidScroll:
self.feedIsScrolledDelta =
scrollNewOverallYPosition - self.feedIsScrolledPrevious;
self.feedIsScrolledPrevious =
scrollNewOverallYPosition;
// nb, you do those only in this routine, NOT the following routine.
if ( scrollNewOverallYPosition < 15.0 )
{
.. animate in the bar
return;
}
if ( self.feedIsScrolledDelta > 0.0 ) …Run Code Online (Sandbox Code Playgroud) 在iOS7中,Safari中的navigationBar会在滚动时自动缩小.Facebook中的navigationBar也是如此,甚至到了它完全消失的程度.
你会如何自己实现这种行为?我猜你也必须动态调整contentOffset,我猜这也会与默认的Refresh Control冲突,不是吗?
这非常有效:
UINavigationController *nc =
[[UINavigationController alloc]
initWithNavigationBarClass:[GTScrollNavigationBar class]
toolbarClass:[UIToolbar class]];
nc.viewControllers = @[firstPage];
self.window.rootViewController = nc;
Run Code Online (Sandbox Code Playgroud)
但是这并不能正常工作:
UINavigationController *nc =
[[UINavigationController alloc]
initWithNavigationBarClass:[GTScrollNavigationBar class]
toolbarClass:[UIToolbar class]];
self.window.rootViewController = nc;
self.window.rootViewController.viewControllers = @[firstPage]; // ERROR
Run Code Online (Sandbox Code Playgroud)
怎么会这样?谢谢
脚本
我有一个应用程序,允许用户向上滚动UITableView来查看帖子.当它们向上滚动时,导航栏将隐藏.我使用以下SO帖子中的代码...
问题
当我在那里尝试第一个答案时,它第一次使用它,完美地工作.在我把它带到它正在工作的地方后,我试图让我的Tab Bar也下降.当我烦躁地使用我的代码时,我一定要搞砸了.因为现在当我运行相同的代码时,我得到的这个黑条不会消失.
未滚动(正常)

向上滚动(留下丑陋的黑条)

我也尝试了什么
GTScrollNavigationBar和TLYShyNavBar
而且他们都离开黑条也......
题
有谁知道如何解决这一问题?
ios ×4
ios7 ×2
uitoolbar ×2
facebook ×1
instancetype ×1
safari ×1
swift ×1
uianimation ×1
uiscrollview ×1
uitableview ×1