1

我有一个自定义图像标题在uinavigationbar上方。我这样做这个代码:从活动状态返回时,uinavigationbar向上移动

self.navController.view.frame = CGRectMake(0.0, 0.0, 320.0, 480.0); 
self.navController.navigationBar.frame = CGRectMake(0.0, 73.0, 320.0, 44.0); 

UIView *checkNav = [self.navController.view viewWithTag:9999]; 
if (checkNav == nil) { 
    UIImageView *imgView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"header-logo.jpg"]]; 
    imgView.tag = 9999; 
    [imgView setFrame:CGRectMake(0.0, 23.0, 320.0, 50.0)]; 
    [self.navController.view addSubview:imgView]; 
} 

这很好。但是,当应用程序不活动时(点击主iphone主页按钮),然后回到应用程序,uinavigationbar会移动到屏幕顶部的默认位置,并隐藏在自定义标题图像后面。

我试过把代码扔到applicationDidBecomeActive中,但它没有帮助。任何帮助将不胜感激。

谢谢!

+0

请包括您“投掷”到applicationDidBecomeActive中的代码。 – jrturton 2011-12-29 18:11:01

回答

2

你得到的docs警告一下:

由于只有少数例外,你永远不应该直接修改导航栏对象。它是允许修改barStyle或导航栏的半透明特性,但你必须永远不会改变它的框架,边界,或α值直接

说了这么多,你应该能够通过重复获得的效果你的上面的代码在applicationDidBecomeActive或applicationWillEnterForeground中,假设你有一个指向导航控制器的指针。您可能会发现隐藏并重新显示导航栏是必需的(一点点黑客,但它可以帮助 - 我有隐藏/显示状态栏和导航栏不会到其正确的地方类似的问题)

+0

啊!我在文档中错过了......感谢您指出了这一点。由于导航栏的原因,我无法将该应用拒之门外。所以,我将改变设计,将导航栏放回原来的位置。谢谢! – TheTC 2011-12-29 21:03:53

0

把代码放到viewWillAppear中怎么样?

+0

这对第一次“醒来”(只是再次尝试以确保)不起作用,但是一旦应用程序返回并导航到已设置为viewWillAppear的视图,它会自行更正。只是没有负载。如果这是有道理的。 =) – TheTC 2011-12-29 17:08:48

+0

有点难倒了,它是否必须是一个导航栏,你可以使用工具栏吗? – Openside 2011-12-29 18:06:27