【发布时间】:2011-02-25 01:31:38
【问题描述】:
我有一个自定义 UINavigationBar,它的图像背景和高度与默认值不同。它显示正常,但只要我在应用程序之间来回切换,导航栏中的背景图像和按钮就会跳起来。
UINavigationBar 是在一个 nib 中创建的,并且有一个自定义类覆盖默认实现以添加图像:
@implementation MyUINavigationBar
- (void)drawRect:(CGRect)rect {
UIImage *image = [UIImage imageNamed: @"nav.png"];
rect.size.height = 60;
[image drawInRect:rect];
}
@end
此时该栏未正确显示。在我的应用程序委托的- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 中,我使用以下代码解决了这个问题:
self.navigationController.view.frame = CGRectMake(0, 20, 320, 460);
self.navigationController.navigationBar.frame = CGRectMake(0, 0, 320, 60);
现在一切都正确显示了。当我切换到另一个应用程序并再次返回时,栏会跳起来,就像没有应用框架一样。这发生在我切换回应用程序后。
以下是显示发生了什么的两个屏幕截图。第一个显示正确版本,另一个显示错误版本。
知道会发生什么吗?我尝试在活动视图的 viewWillAppear 和 viewDidAppear 或应用委托的 applicationDidBecomeActive 中应用新框架,但这没有帮助。
https://skitch.com/instromaniac/rtagr/ios-simulator https://skitch.com/instromaniac/rtaf9/view-not-ok
【问题讨论】:
-
我也有类似的问题。这让我很沮丧。如果我找到答案,我会告诉你的。我的问题:stackoverflow.com/questions/6361354/…
标签: iphone cocoa-touch uinavigationcontroller uinavigationbar