如何创建像BestBuy App这样的自定义导航栏?

Raj*_*ana 6 objective-c uinavigationbar uinavigationcontroller ios

我想在BestBuy应用程序中创建一个自定义导航栏,或者如下面给出的截图所示.

在此输入图像描述

我希望这种类型的导航始终位于每个viewController的顶部.

如果有人能告诉我程序或任何形式的帮助将不胜感激.谢谢.

Dai*_*jan 11

编写UINavigationBar的子类,您可以在其中执行自定义绘图并根据需要添加子视图.

然后告诉你的navigationController通过使用它来启动它来使用该类 initWithNavigationBarClass:toolBarClass:

例如

@interface MyBar : UINavigationBar
@end

@implementation MyBar 
.... //like any UIView
@end
Run Code Online (Sandbox Code Playgroud)
UINavigationController *navi = [[UINavigationController alloc] initWithNavigationBarClass:[MyBar class] toolbarClass:nil];
Run Code Online (Sandbox Code Playgroud)

代替 initWithRootViewController


样品

- (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;
}
Run Code Online (Sandbox Code Playgroud)