Пользовательский UINavigationController UINavigationBar - PullRequest
4 голосов
/ 28 октября 2010

В основном я хочу кастом UINavigationBar. Я не хочу, чтобы он был "полупрозрачным" или чем-то подобным приложению картинок.

Я в основном хочу полностью удалить его, но я все еще хочу иметь возможность добавлять кнопки назад и тому подобное, когда навигационные контроллеры нажимаются, и я хочу, чтобы представления (EG: UITableViewController) были опущены вниз под ним.

Как это:

alt text

Есть идеи, как этого достичь?

Спасибо

Ответы [ 4 ]

6 голосов
/ 28 октября 2010
@implementation UINavigationBar (background)

- (void)drawRect:(CGRect)rect {
    UIImage *image = [UIImage imageNamed:@"navigationbar.png"];
    [image drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)];
}

@end

По сути, это не совсем ясно - это визуальная ложь. Единственный способ сделать это реалистично - переопределить метод UINavigationBar drawRect:, как показано выше.

4 голосов
/ 28 октября 2010

Чтобы просмотреть UINavigationBar, если вы выберете его, просто:

self.navigationController.navigationBar.translucent=YES;

Вам придется изменить оттенок / цвет, чтобы он соответствовал фону, если вы хотите, чтобы он выглядел какизображение, которое вы разместили.

1 голос
/ 25 августа 2012

В начале вашего AppDelegate подкласса UINavigationBar, как показано ниже:

@interface CustomNavBar : UINavigationBar

@end

@implementation CustomNavBar

- (void)drawRect:(CGRect)rect {
    UIImage *image = [UIImage imageNamed:@"bar.png"];
    [image drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)];
}

, а затем в AppDelegate сделать эту магию:

//Set custom NavigationBar
[self.navController setValue:[[CustomNavBar alloc]init] forKeyPath:@"navigationBar"];
//Set tint to match bar.png
self.navController.navigationBar.tintColor = [UIColor colorWithRed:0.93 green:0.43 blue:0 alpha:1];
//Set font for NavigationBar
[self.navController.navigationBar setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:[UIFont fontWithName:@"Comfortaa-Bold" size:20], UITextAttributeFont, nil]];

Это должно дать вам гораздо больше контроля над UINavigationController внешним видом.

0 голосов
/ 28 октября 2010

Трудно сказать, это может быть UINavigationBar, и цвет соответствует фону UIView, или UINavigationBar, это просто вид с пользовательскими кнопками и UILabel сверху.Выберите подход и закодируйте его или задайте вопрос еще раз с более подробной информацией.

...