tcu*_*rdt 26 iphone cocoa-touch
我有一个基于UITabBar的应用程序,工作正常.在某些情况下,我会显示不同的UIViewController.现在的问题是,我必须调整测试笔尖的框架(并且只有测试笔尖!)才能正确显示.(否则视图位于状态栏下方).
- (void)applicationDidFinishLaunching:(UIApplication *)application
{
if (condition) {
UIViewController *vc = [[UIViewController alloc] initWithNibName:@"Test" bundle:nil];
// FIXME this should NOT be required
CGRect r = vc.view.frame;
r.origin.y += 20;
vc.view.frame = r;
[window addSubview:vc.view];
[window makeKeyAndVisible];
return;
}
[window addSubview:tabViewController.view];
[window makeKeyAndVisible];
}
Run Code Online (Sandbox Code Playgroud)
那么测试笔尖可能有问题吗?不能.测试笔尖在一个干净的新项目中按照需要工作.一个新的干净笔尖显示相同的症状.所以MainWindow笔尖必定有问题,对吧?但是UITabBarController显示得很好.
我有点困惑,这里没有想法.有什么建议如何跟踪这个?
cdu*_*uhn 76
将根视图添加到UIWindow可能很复杂,因为窗口始终是状态栏的下层.因此,必须重置根视图的框架[[UIScreen mainScreen] applicationFrame]
以防止它也会覆盖状态栏.我们通常不必担心这个,因为UIViewController会为我们修改框架...除非它没有.这是交易:
我猜Apple认为-initWithNibName:bundle:通常不会用于创建窗口的根视图,所以它不会在你的情况下调整框架.正如您所做的那样手动调整大小是很好的,事实上在iPhone OS的View Controller编程指南中推荐使用它,但是您应该使用它,[[UIScreen mainScreen] applicationFrame]
因为状态栏并不总是 20像素高(例如,当您打开时它会更高)一个电话.)
归档时间: |
|
查看次数: |
11235 次 |
最近记录: |