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}}
这导致我的内容出现在导航栏和状态栏下方。
我知道我可以通过获取主屏幕的高度,减去状态栏的高度和导航栏的高度来自己计算高度,但这似乎是不必要的额外工作。
还有其他人遇到过这个问题吗?
更新:
我已经找到了针对此特定问题的解决方案。将导航栏的半透明属性设置为NO:
self.navigationController.navigationBar.translucent = NO;
这样可以防止视图被框在导航栏和状态栏的下面。
但是,当您希望导航栏为半透明时,我还没有找到针对这种情况的解决方案。例如,以全屏方式查看照片时,我希望导航栏是半透明的,并且视图应位于其下方。那行得通,但是当我切换显示/隐藏导航栏时,我什至遇到了奇怪的结果。第一个子视图(a UIScrollView
)的界限y每次更改的原点。