如何将UINavigationBar子类化为与Three20 / iOS5一起使用?

时间:2011-10-14 19:17:39

标签: iphone ios uinavigationcontroller three20 uinavigationbar

你们中的许多人可能已经注意到我们不能创建一个类别来覆盖iOS5中的UINavigationBar drawRect。现在实际上我没有看到一种很好的方法来实现这种自定义而不使用UINavigationBar的子类并将其设置在我的MainWindow.xib中的navigationController-> navigationBar中。但是,TTNavigator无法识别navigationController,因为每个TTViewController都有自己的超类TTNavigationController

1 个答案:

答案 0 :(得分:3)

我不知道如何为Three20解决它,但一般来说,支持IOS 5你可以使用这种方法

UIImage *image = [UIImage imageNamed:@"header.png"];

if([navigationBar respondsToSelector:@selector(setBackgroundImage:forBarMetrics:)] ) {
    //iOS 5 new UINavigationBar custom background
    [navigationBar setBackgroundImage:image forBarMetrics: UIBarMetricsDefault];
} 
else{
    UIImageView *imgView = [[[UIImageView alloc] initWithImage:image] autorelease];
    [imgView setUserInteractionEnabled:NO];
    [imgView setTag:TOOLBAR_TAG];
    [navigationBar insertSubview:imgView atIndex:0];
}