将图像添加到UINavigationBar

Vol*_*da2 4 uinavigationbar uinavigationcontroller ios

我需要支持iOS4和iOS5.我的代码在iOS4上运行良好,但在iOS5上不起作用.如何解决问题.

UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"E_44.png"]];
imageView.frame = CGRectMake(136, 0, 52, 44);
[self.navigationController.navigationBar insertSubview:imageView atIndex:0];
[imageView release];
Run Code Online (Sandbox Code Playgroud)

Sta*_*wed 8

为UINavigationBar设置自定义背景也支持iOS5和iOS4!


如您所知,在iOS 5问世之前,我们使用drawRect覆盖来AppDelegate进行自定义UINavigationBar.但是要知道,iOS 5为我们提供了一些新的样式方法(旧的方法不起作用).

如何使用程式化构建适用于iOS 4和iOS 5的应用程序UINavigationBar

你必须要做到这两点!

AppDelegate使用此代码:

@implementation UINavigationBar (UINavigationBarCategory)
- (void)drawRect:(CGRect)rect {
UIImage *img = [UIImage imageNamed:@"navbar.png"];
[img drawInRect:rect];
}
@end
Run Code Online (Sandbox Code Playgroud)

viewDidLoadiOS5的方法中(在您的视图实现中):

if ([self.navigationController.navigationBar respondsToSelector:@selector( setBackgroundImage:forBarMetrics:)]){
[self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"navbar.png"] forBarMetrics:UIBarMetricsDefault];
}
Run Code Online (Sandbox Code Playgroud)

如果你看到,我们在这里询问navbar是否会响应ToSelector以避免iOS4崩溃!