uinavigationbar从非活动状态返回时向上移动

时间:2011-12-29 16:56:17

标签: iphone ios cocoa-touch uinavigationcontroller 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,但它没有帮助。任何帮助将不胜感激。

谢谢!

2 个答案:

答案 0 :(得分:2)

你会在docs

中收到警告
  

除了少数例外,您不应该直接修改导航栏对象。允许修改导航栏的barStyle或半透明属性,但不得直接更改其框架,边界或Alpha值

话虽如此,你应该能够通过在applicationDidBecomeActive或applicationWillEnterForeground中重复上面的代码来获得效果,假设你有一个指向导航控制器的指针。你可能会发现隐藏和重新显示导航栏是必需的(一点点黑客,但它可以帮助 - 我有类似的问题隐藏/显示状态栏和导航栏没有到达正确的位置)

答案 1 :(得分:0)

如何将代码放入viewWillAppear?