Mom*_*omi 32 iphone cocoa-touch background uinavigationbar ios
我想在导航栏中添加图像背景.
这样对吗?
//set custom background image
UIImageView *backgroundView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"NavigationBackground.png"]];
[self.navigationBar insertSubview:backgroundView atIndex:0];
[backgroundView release];
Run Code Online (Sandbox Code Playgroud)
iwa*_*wat 98
这是来自@luvieere 链接的代码.将此代码粘贴到上面的根视图控制器中
@implementation rootviewController
@implementation UINavigationBar (CustomImage)
- (void)drawRect:(CGRect)rect {
UIImage *image = [UIImage imageNamed:@"NavigationBar.png"];
[image drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)];
}
@end
Run Code Online (Sandbox Code Playgroud)
从iOS 5开始,有一种官方方法可以做到这一点.(见iOS开发者库)
// someplace where you create the UINavigationController
if ([navigationController.navigationBar respondsToSelector:@selector(setBackgroundImage:forBarMetrics:)] ) {
UIImage *image = [UIImage imageNamed:@"NavigationBar.png"];
[navigationBar setBackgroundImage:image forBarMetrics:UIBarMetricsDefault];
}
Run Code Online (Sandbox Code Playgroud)
但是,除非你真的想放弃iOS 4及更低版本,否则请保留旧代码以实现向后兼容.
最简单的方法是设置UINavigationBar
图层内容.
NSString *barBgPath = [[NSBundle mainBundle] pathForResource:@"mybgimage" ofType:@"png"];
[nBar.layer setContents: (id)[UIImage imageWithContentsOfFile: barBgPath].CGImage];
Run Code Online (Sandbox Code Playgroud)
缺点是按键也不会产生过正确的色彩,但你可以设置导航栏的颜色最接近什么是你的背景图片和色调应采取照顾.
我会在appdelegate中这样做
+ (void)Generalstyle {
//navigationbar
UINavigationBar *navigationBar = [UINavigationBar appearance];
[navigationBar setBackgroundImage:[UIImage imageNamed:@"navigation.png"] forBarMetrics:UIBarMetricsDefault];
}
Run Code Online (Sandbox Code Playgroud)
并在
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
[[self class] Generalstyle];
}
Run Code Online (Sandbox Code Playgroud)
.h文件:
+ (void) Generalstyle;
Run Code Online (Sandbox Code Playgroud)
在ios5中,我设置导航栏背景图像(对于所有导航栏图像)AppDelegate.m
:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
[application setStatusBarStyle:UIStatusBarStyleBlackOpaque animated:NO];
UIImage *navBarBackgroundImage = [UIImage imageNamed:@"nav_bg"];
[[UINavigationBar appearance] setBackgroundImage:navBarBackgroundImage forBarMetrics:UIBarMetricsDefault];
return YES;
}
Run Code Online (Sandbox Code Playgroud)