我的应用程序中有一个视图控制器,在故事板中拖动了导航栏.它在iOS 6中运行良好,但在iOS 7中它看起来像这样:

状态栏和导航栏不应相互冲突.我已经看到很多关于堆栈溢出的问题,但它们对我没什么帮助.
有些问题说我应该使用这个"self.edgesForExtendedLayout = UIRectEdgeNone;" 但它不起作用.有人说我应该删除导航栏并将其嵌入导航控制器中,由于我的程序实现方式,我无法做到这一点.一些解决方案建议使用视图边界,但它对我来说也不起作用.
有什么能帮助我解决这个问题.提前致谢!
更新:我已将视图控制器嵌入到uinavigation控制器中.删除了之前手动添加的导航栏.现在它在故事板中看起来不错,但是当我运行它时,它显示以下内容:
它显示来自其后面的另一个视图控制器的文本,即其父视图控制器.意味着它现在透明.谁能指出我做错了什么?
如果你正在解决这个问题,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) 我已将我的项目从iOS 6升级到iOS 7,但似乎有一点问题.状态栏和工具栏是重叠的,彼此非常接近.之前通过在故事板中手动拖动工具栏来添加工具栏.这是它出现的方式:

我已经看到一些问题,建议使用"positionForBar:"和" - (UIBarPosition)positionForBar:(id)bar"但我不确切知道如何使用它们,一点点解释和简单的方法可能会这样做救命.谢谢!
更新:以下是一些还需要修复的代码.它工作得很好,但由于detailviewcontroller(WebViewController)现在嵌入在导航控制器中,下面的代码导致异常.看起来我需要修改此方法中的第一行.
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
WebViewController *wvc = [self.navigationController.parentViewController childViewControllers][1];
RSSItem *entry = [[channel items] objectAtIndex:[indexPath row]];
wvc.title = entry.title;
wvc.urlString = entry.link;
}
Run Code Online (Sandbox Code Playgroud) 使用iOS7,我放在状态栏下方的工具栏已与状态栏合并

但当我将工具栏向下移动20px时,它看起来就像

如何才能获得第一张图片的效果(状态栏与工具栏颜色相同),但不能将其与状态栏合并.或者这应该在iOS7中以不同方式完成?