iphone - 导航栏出现在带有新 iOS7 SDK 的 View 上

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];

在早期版本中,它可以正常工作。搜索栏出现在 statusbar 和导航栏下方。 tableview 出现在搜索栏下方

但是当我在 Xcode 5 sdk iOS 7 上运行它时,搜索栏不可见(我认为它位于状态栏和导航栏下方),并且导航栏也出现了表格 View 。

iOS 7 稳定版会修复它吗?

还是我编码的问题?

或者我们应该通过为 iOS 7 添加 y (y = statubar height + nav bar height) 值来处理它?

我最近下载了 Xcode 5 DP 以在 iOS 7 中测试我的应用程序。我注意到并确认的第一件事是我的 View 边界并不总是根据状态栏和导航栏调整大小。

在 viewDidLayoutSubviews 中,我打印 View 的边界:

{{0, 0}, {320, 568}}

这会导致我的内容显示在导航栏和状态栏下方。

我知道我可以通过获取主屏幕的高度,减去状态栏的高度和导航栏的高度来计算高度,但这似乎是不必要的额外工作。

有其他人遇到过这个问题吗?

更新:

我已经找到了解决这个特定问题的方法。将导航栏的 translucent 属性设置为 NO:

self.navigationController.navigationBar.translucent = NO;

这将修复 View 在导航栏和状态栏下方的框架。

但是,当您希望导航栏为半透明时,我还没有找到解决方法。例如,在全屏查看照片时,我希望导航栏是半透明的,并且 View 被框在它下面。这行得通,但是当我切换显示/隐藏导航栏时,我遇到了更奇怪的结果。第一个 subview (一个UIScrollView)每次都会改变它的边界y原点。

最佳答案

这并不完全正确。 iOS 7 中引入了一个新属性,可让您像以前的 iOS 版本一样调整布局行为。将这段代码放在你的 View Controller 中,你应该很高兴!您的导航栏占用的空间应自动计算

 if ([self respondsToSelector:@selector(edgesForExtendedLayout)])
    self.edgesForExtendedLayout = UIRectEdgeNone;

您需要在 -(void)viewDidLoad 方法中添加上述内容。

注意:您现在应该使用最新的 GM 版本的 iOS 7 和 Xcode 5,因为 API 已从 beta 版本更改。

https://stackoverflow.com/questions/18103715/

相关文章:

objective-c - 使用 -performSelector : vs. 只是调用方法

ios - 什么时候使用 NSSet 而不是 NSArray 更好?

objective-c - 未找到体系结构 i386 的符号

objective-c - 如何向 NSDictionary 添加 bool 值?

ios - UILabel 中的动画文本更改

ios - 将 UIButton 字体大小调整为宽度

ios - 使用 `textField:shouldChangeCharactersInRange:

iphone - ARC 还是不 ARC?有什么优点和缺点?

objective-c - 如何使用 Objective-C 解析 JSON?

objective-c - NSObject +load 和 +initialize - 他们做什么