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