¿Cómo crear una barra de navigation personalizada como la aplicación BestBuy?

Quiero hacer una barra de navigation personalizada como en la aplicación BestBuy o como se muestra en la siguiente captura de pantalla.

introduzca la descripción de la imagen aquí

Quiero que este tipo de navigation esté siempre en la parte superior de todos y cada viewController.

Si alguien me puede decir que apreciaría el procedimiento o cualquier tipo de ayuda. Gracias.

escriba una subclass de UINavigationBar en la que haga un dibujo personalizado y agregue las subvenciones según sea necesario.

luego le dice a su navigationController que use esa class iniciándolo con initWithNavigationBarClass:toolBarClass:

p.ej

 @interface MyBar : UINavigationBar @end @implementation MyBar .... //like any UIView @end 

 UINavigationController *navi = [[UINavigationController alloc] initWithNavigationBarClass:[MyBar class] toolbarClass:nil]; 

en lugar de initWithRootViewController


Muestra

 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; // Override point for customization after application launch. if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) { self.mainViewController = [[FDMainViewController alloc] initWithNibName:@"FDMainViewController_iPhone" bundle:nil]; } else { self.mainViewController = [[FDMainViewController alloc] initWithNibName:@"FDMainViewController_iPad" bundle:nil]; } UINavigationController *navi = [[UINavigationController alloc] initWithNavigationBarClass:[UINavigationBar class] toolbarClass:nil]; navi.viewControllers = @[self.mainViewController]; self.window.rootViewController = navi; [self.window makeKeyAndVisible]; return YES; } 

La barra de navigation puede tomar tres vistas, dos botones en cada lado a la izquierda y derecha, también puede agregar una vista para el título ,,

 //this will set a background image to your navigation bar. [[self.navigationController navigationBar] setBackgroundImage:[UIImage imageNamed:@"top-bar.png"] forBarMetrics:UIBarMetricsDefault]; UIButton *leftButton = [UIButton buttonWithType:UIButtonTypeCustom]; [leftButton setBackgroundImage:[UIImage imageNamed:@"backBtn.png"] forState:UIControlStateNormal]; leftButton.frame = CGRectMake(0, 0, 66, 30); [leftButton addTarget:self action:@selector(navBack) forControlEvents:UIControlEventTouchUpInside]; self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:leftButton]; UIImage *image=[UIImage imageNamed:@"add-btn.png"]; UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; button.bounds = CGRectMake( 0, 0, image.size.width, image.size.height); [button setBackgroundImage:image forState:UIControlStateNormal]; [button addTarget:self action:@selector(doneAct) forControlEvents:UIControlEventTouchUpInside]; self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:button]; 

y para agregar la barra de búsqueda

 self.navigationItem.titleView = mySearchbarView;