我在导航栏中进行了更改意味着我增加了导航栏的高度&做了一些自定义的更改,它工作正常但是当我最小化应用程序并再次最大化它时,它只显示原始高度,这是我所做的更改,那些在最小化后不起作用,我的代码是
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
NSLog(@" i m in didFinishLaunchingWithOptions" );
[[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"TopHeader"] forBarMetrics:UIBarMetricsDefault];
[[UINavigationBar appearance] setFrame:CGRectMake(0, 0, 320, 55)];
[[UINavigationBar appearance] setTitleVerticalPositionAdjustment:(-15.0) forBarMetrics:UIBarMetricsDefault];
[[UINavigationBar appearance] setTitleTextAttributes: [NSDictionary dictionaryWithObjectsAndKeys:
[UIColor colorWithRed:245.0/255.0 green:245.0/255.0 blue:245.0/255.0 alpha:1.0], UITextAttributeTextColor,
[UIColor colorWithRed:0.0 green:0.0 blue:0.0 alpha:0.8],UITextAttributeTextShadowColor,
[NSValue valueWithUIOffset:UIOffsetMake(0, 1)],
UITextAttributeTextShadowOffset,
[UIFont fontWithName:@"HelveticaNeue-CondensedBlack" size:16.0], UITextAttributeFont, nil]];
return YES;
}
最大化之后转到applicationDidBecomeActive
这就是为什么我将代码放在applicationDidBecomeActive
中但是它不起作用,为什么会发生这种情况?
在最小化之前
最小化& amp;再次最大化它看起来像下面,即高度再次自动设置为44
更新:我在applicationWillEnterForeground
- (void)applicationWillEnterForeground:(UIApplication *)application
{
UINavigationController *my=(UINavigationController * )self.window.rootViewController;
UINavigationBar *navigationBar = [my navigationBar];
CGRect frame = [navigationBar frame];
frame.size.height = 55.0f;
[navigationBar setFrame:frame];
NSLog(@" i m in applicationWillEnterForeground" );
}
在调试时,当我写下它的描述时,它显示高度为55.但在屏幕上它仍然看起来像第二个图像。为什么会这样。
答案 0 :(得分:4)
当您的应用从后台打开application:didFinishLaunchingWithOptions:
时,不会被调用。您想要使用applicationWillEnterForeground:
或applicationDidBecomeActive:
代替。有关详细信息,请查看UIApplicationDelegate
protocol reference。
编辑:在回答作者编辑的问题时,我会这样说。我在我的应用程序中玩这个代码,我已经能够重现这个问题。我已经尝试了许多解决方案来修复它,包括在UINavigationController
的{{1}}中重置导航栏的框架。我建议创建一个示例项目来重现此问题并将其提交给Apple的Bug报告者,或创建一个重新定位和调整自身大小的UINavigationBar子类。
答案 1 :(得分:1)
我解决了这个问题,只是覆盖了UINavigationBar&在LayoutSubViews中设置navigationBar的高度。
@implementation UINavigationBar (customNAvigBar)
- (void)layoutSubviews
{
[self setFrame:CGRectMake(0, 0, 320, 55)];
}
@end
这意味着每当我绘制navigationBar时它会自动调用&设定高度。