Вопрос по objective-c, uinavigationcontroller, ios, uinavigationbar – Как создать пользовательскую панель навигации, например, приложение BestBuy?

6

Я хочу создать собственную панель навигации, как в приложении BestBuy или как показано на скриншоте ниже.

Я хочу, чтобы этот тип навигации всегда был на вершине каждого viewController.

Если кто-нибудь может сказать мне, процедура или любая помощь будет принята с благодарностью. Благодарю.

Я нене думаю, что они используют пользовательскую панель навигации ... этоПростое изображение :) NSCry
они, вероятно, нет. я согласен. мой ответ излишний для этого .. он самый гибкий, но азизS код выглядит лучше подходит для этого, я думаю. .. хотя я незнать о разделителях фона Daij-Djan

Ваш Ответ

2   ответа
4

Панель навигации может иметь три вида, по две кнопки с каждой стороны слева и справа, также вы можете добавить вид для заголовка ,,

//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];

и добавить панель поиска

self.navigationItem.titleView = mySearchbarView;
спасибо, нене вижу этого .. Daij-Djan
да, если ты ненапример, не нужны разделители ... хотя они могут быть в фоновом изображении .. это работает в большинстве случаев Daij-Djan
конечно, но кнопка выигралаЕсли вы не будете выделены при прикосновении, ваш ответ будет лучше. Aziz
11

написать подкласс UINavigationBar, в котором вы делаете пользовательский рисунок и добавлять подпредставления по мере необходимости.

затем скажите вашему навигационному контроллеру использовать этот класс, начав его с помощьюinitWithNavigationBarClass:toolBarClass:

например

@interface MyBar : UINavigationBar
@end

@implementation MyBar 
.... //like any UIView
@end
UINavigationController *navi = [[UINavigationController alloc] initWithNavigationBarClass:[MyBar class] toolbarClass:nil];

вместо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;
}
Как сказать navigationController использовать этот класс? Rajan Balana
позволь нампродолжить это обсуждение в чате Rajan Balana
нажмите на нее без анимации или установите navi.viewControllers = @ [rootVC] Daij-Djan
Я не'Понять концепцию push это не анимация. Это правильный способ сделать это? Rajan Balana

Похожие вопросы