【发布时间】:2013-08-08 20:22:34
【问题描述】:
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 上运行它时,搜索栏不可见(我认为它位于状态栏和导航栏下方),并且导航栏也出现在表格视图上方。
会在iOS 7 稳定版本中修复吗?
还是我编码的问题?
或者我们应该通过为iOS 7 添加 y (y = statubar height + nav bar height) 值来处理它?
我最近下载了 Xcode 5 DP 以在 iOS 7 中测试我的应用程序。我注意到并确认的第一件事是我的视图边界并不总是根据状态栏和导航栏调整大小。
在 viewDidLayoutSubviews 中,我打印视图的边界:
{{0, 0}, {320, 568}}
这会导致我的内容显示在导航栏和状态栏下方。
我知道我可以通过获取主屏幕的高度,减去状态栏的高度和导航栏的高度来计算高度,但这似乎是不必要的额外工作。
有其他人遇到过这个问题吗?
更新:
我已经找到了解决这个特定问题的方法。将导航栏的 translucent 属性设置为 NO:
self.navigationController.navigationBar.translucent = NO;
这将修复视图在导航栏和状态栏下方的框架。
但是,当您希望导航栏为半透明时,我还没有找到解决方法。例如,在全屏查看照片时,我希望导航栏是半透明的,并且视图要框在它下面。这行得通,但是当我切换显示/隐藏导航栏时,我遇到了更奇怪的结果。第一个子视图(UIScrollView)每次都会更改其边界 y 原点。
【问题讨论】:
-
测试版软件。苹果开发者论坛更合适。此外,过渡指南中明确提到了该问题。
标签: iphone ios objective-c ipad ios7