从iOS7开始,我的顶部UITableView有一个额外的空间,有一个风格UITableViewStyleGrouped.
这是一个例子:

tableview从第一个箭头开始,有35个像素的无法解释的填充,然后绿色标题是UIView返回的viewForHeaderInSection(其中该部分为0).
任何人都可以解释这个35像素的数量来自何处以及如何在不切换的情况下摆脱它UITableViewStylePlain?
CGRect cgRect1 = [[UIScreen mainScreen] applicationFrame];
UISearchBar *mySearchBar = [[UISearchBar alloc]
initWithFrame:CGRectMake(0, 0, cgRect.size.width, 40)];
mySearchBar.autoresizingMask =
UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight ;
UITableView *myTableView = [[UITableView alloc]
initWithFrame:CGRectMake(0, 40, cgRect.size.width, cgRect.size.height-40)];
myTableView.autoresizingMask =
UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight;
[self.view addSubview:mySearchBar];
[self.view addSubview:myTableView];
Run Code Online (Sandbox Code Playgroud)
在早期版本中,它正常工作.搜索栏显示在statusbar导航栏下方.该tableview是出现在搜索栏下方
但是当我运行它时Xcode 5 sdk iOS 7,搜索栏不可见(我认为它位于状态栏和导航栏下),并且导航栏也出现在表视图上.
是否可以通过iOS 7稳定释放来修复?
还是我编码的问题?
或者我们应该通过添加y (y = statubar height + nav bar height)值来处理它iOS 7?
我最近下载了Xcode 5 DP来测试我在iOS 7中的应用程序.我注意到并确认的第一件事是我的视图边界并不总是调整大小来考虑状态栏和导航栏.
在viewDidLayoutSubviews中,我打印视图的边界:
{{0, 0}, {320, 568}}
Run Code Online (Sandbox Code Playgroud)
这导致我的内容出现在导航栏和状态栏下方.
我知道我可以通过获取主屏幕的高度,减去状态栏的高度和导航栏的高度来解释自己的高度,但这似乎是不必要的额外工作.
还有其他人遇到过这个问题吗?
更新:
我找到了解决这个特定问题的方法.将导航栏的半透明属性设置为NO:
self.navigationController.navigationBar.translucent …Run Code Online (Sandbox Code Playgroud) 我刚刚注意到在UIView的结构布局下找到的iOS 6/7 Delta属性.
这是什么以及为什么AutoLayout缺少这个?

我有一个ViewController在里面UINavigationcontroller,但导航栏是隐藏的.当我在iOS 7上运行应用程序时,状态栏显示在我的视图之上.有办法避免这种情况吗?
我不想编写任何特定于操作系统的代码.

我试着设置View controller-based status bar appearance到NO,但它并没有解决这个问题.
我知道已经有一些stackoverflow 问题说明了如何更改所有视图控制器的状态栏.我目前正在以这种方式更改状态栏的颜色:
if(IS_IOS7)
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
Run Code Online (Sandbox Code Playgroud)
在里面 application:DidFinishLaunching
另外,我已将UIViewControllerBasedStatusBarAppearanceplist中的值更改为NO.但是,在启动画面中,它仍会显示带有黑色的状态栏文本.
是否可以在启动画面中更改状态栏文本颜色的颜色?
我正在将我的应用程序迁移到iOS 7.为了处理状态栏问题,我添加了此代码
if([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0f)
{
CGRect frame = self.navigationController.view.frame;
if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)
{
frame.origin.y = 20;
}
else
{
frame.origin.x = 20;
}
[self.navigationController.view setFrame:frame];
}
Run Code Online (Sandbox Code Playgroud)
这在正常情况下工作正常.如果我正在更改方向(应用程序仅支持横向方向)或呈现任何视图控制器并关闭模型视图控制器,我的视图控制器对齐方式已更改.状态栏再次与我的视图控制器重叠.这段代码根本不起作用.请指导我修复此状态栏问题.
案例2:这就是我呈现视图控制器的方式
ZBarReaderViewController *reader = [ZBarReaderViewController new];
reader.readerDelegate = self;
if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
reader.supportedOrientationsMask = ZBarOrientationMaskLandscape;
else
reader.supportedOrientationsMask = ZBarOrientationMaskPortrait;
[self presentModalViewController:reader animated:YES];
Run Code Online (Sandbox Code Playgroud)
参考:

提前致谢.
我最近升级到xcode 5,当我在iOS模拟器中运行我的应用程序时,启动画面与状态栏重叠,当你在应用程序中时状态栏重叠到我的应用程序上的元素,就像我左上角的后退按钮我的应用程序的一角.我使用phonegap 2.9构建我的应用程序.任何想法如何让我正确渲染.


(如果需要编辑进行最终编辑,请参阅其他编辑,而不是编写过长的问题).
我有一个应用程序设置如下:
InitialViewController(子类ECSlidingViewController)
主导航控制器(子类UINavigationController)
主要家庭视图控制器(子类UIViewController)
在viewDidLoadinitialViewController中,我以主视图控制器为根加载主导航控制器.
self.topViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"MainNavVC"];
Run Code Online (Sandbox Code Playgroud)
在应用程序的第一次加载时,状态栏和导航栏是分开的.

这是期望的效果.
但是,然后我使用标准方法加载模态视图控制器并关闭它:
[self performSegueWithIdentifier:@"LoadSelectOpponentVC" sender:self];
Run Code Online (Sandbox Code Playgroud)
然后关闭:
[self dismissViewControllerAnimated:YES completion:nil];
Run Code Online (Sandbox Code Playgroud)
这反过来导致主导航控制器(保持主视图控制器)错误地显示状态栏并重叠:

View controller-based status bar appearanceedgesForExtendedLayout相关的无,但没有改变.我试图注销一些框架以查看问题发生的位置:
在第一次加载时:
主Nav VC - 查看框架 - {{0,0},{320,480}}
Main Nav VC - Nav Bar Frame - {{0, 0}, {320, 44}}
Initial VC - View Frame - {{0, 0}, {320, 480}}
Home VC - View Frame - …Run Code Online (Sandbox Code Playgroud) 我的应用程序中有一个视图控制器,在故事板中拖动了导航栏.它在iOS 6中运行良好,但在iOS 7中它看起来像这样:

状态栏和导航栏不应相互冲突.我已经看到很多关于堆栈溢出的问题,但它们对我没什么帮助.
有些问题说我应该使用这个"self.edgesForExtendedLayout = UIRectEdgeNone;" 但它不起作用.有人说我应该删除导航栏并将其嵌入导航控制器中,由于我的程序实现方式,我无法做到这一点.一些解决方案建议使用视图边界,但它对我来说也不起作用.
有什么能帮助我解决这个问题.提前致谢!
更新:我已将视图控制器嵌入到uinavigation控制器中.删除了之前手动添加的导航栏.现在它在故事板中看起来不错,但是当我运行它时,它显示以下内容:
它显示来自其后面的另一个视图控制器的文本,即其父视图控制器.意味着它现在透明.谁能指出我做错了什么?
本周推出了iOS 7 Beta,每当更新发布时,这些都必须更新应用程序以兼容性设置一些错误.
好吧,我在我的iPhone上安装了iOS 7并且应用程序原理完美运行,然后安装了Xcode 5(预览版)并编译了我的项目,我意识到新的statusBar现在完全平静,你的视图控制器将显示为她的背景.
这就是出现问题的地方,屏幕底部有一个20px的白色条带,由于视图控制器赢得了曾经是statusBar的空间.
如果我在我的故事板中修复此问题就可以了,但是由于20px statusBar,iOS 6中的问题仍然存在,屏幕将被切断.
我认为简单的解决方案是在启动时检查iOS的版本并根据每个创建一个故事板.在我的项目中,我有3个故事板,iPhone 3.5','iPhone 4'和'iPad'.很快就要创建3个故事板,因为这20个px.
那将是最好的解决方案吗?我还有其他选择吗?
抱歉,长篇文章.欢迎任何帮助!
ios7 ×9
ios ×7
iphone ×3
statusbar ×3
xcode5 ×3
ipad ×2
objective-c ×2
uistatusbar ×2
cordova ×1
layout ×1
uitableview ×1
uiview ×1