UINavigationBar自定义背景

原帖地址 http://blog.csdn.net/wxg694175346/article/details/7757504

###############################################################
首先,为appDelegate增加一个navigationController属性:
@interface DymAppDelegate : UIResponder <UIApplicationDelegate>
	{
	    UINavigationController *navController_;
	}
	@property (strong, nonatomic) UIWindow *window;
	@property (strong, nonatomic) DymViewController *viewController;
	  
	@property (nonatomic, readonly, retain) UINavigationController *navigationController;
@end



- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
	{
	    self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
	      
	    self.viewController = [[[DymViewController alloc] initWithNibName:@"DymViewController" bundle:nil] autorelease];
	      
            //rootViewController设置为navigationController
	    self.window.rootViewController = self.navigationController;
	      
	    self.viewController = nil;
	      
	    [self.window makeKeyAndVisible];
	    return YES;
	}


- (UINavigationController*)navigationController {
	    if (navController_ == nil) {
	        UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:self.viewController];
	          
	        // Archive navigation controller for changing navigationbar class
	        [navController navigationBar];
	        NSMutableData *data = [[NSMutableData alloc] init];
	        NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:data];
	        [archiver encodeObject:navController forKey:kRootKey];
	        [archiver finishEncoding];
	        [archiver release];
	        [navController release];
	          
	        // Unarchive it with changing navigationbar class
	        NSKeyedUnarchiver *unarchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:data];
	        [unarchiver setClass:[CustomNaviBar class]
	                forClassName:NSStringFromClass([UINavigationBar class])];
	        navController_ = [[unarchiver decodeObjectForKey:kRootKey] retain];
	        [unarchiver release];
	          
	        [data release];
	    }
	    return navController_;
	}

利用NSKeyedArchiver和NSKeyedUnarchiver来修改navigationbar。。。

猜你喜欢

转载自shuixian361.iteye.com/blog/1716444
今日推荐