Используйте пользовательский UINavigationBar с initAsRootViewController: - PullRequest
1 голос
/ 19 ноября 2011

В настоящее время я делаю следующее:

    BlogViewController *viewController = [[BlogViewController alloc] initWithBlogPosts];
    UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:viewController];
    [self presentModalViewController:navController animated:YES];
    [viewController release];
    [navController release];

Однако мне нужен способ использовать пользовательский UINavigationBar.Я пытался использовать такую ​​категорию:

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

Но, похоже, это не подхватило.Какие-либо предложения?BlogViewController является подклассом UIViewController.

Ответы [ 3 ]

1 голос
/ 20 ноября 2011

Для ios5 вы можете установить фоновое изображение напрямую, используя setBackgroundImage:forBarMetrics:.

Оставьте реализацию категории для pre-ios5 и убедитесь, что панель навигации реагирует на селектор выше, и вы рассмотрели обе версии.

0 голосов
/ 04 октября 2013

Я использовал этот ответ парня :

[self.navigationController setValue:[[[CustomNavBar alloc]init] autorelease] forKeyPath:@"navigationBar"];
0 голосов
/ 19 ноября 2011

У меня была похожая проблема некоторое время назад, а затем я узнал, что вы действительно можете сделать это на своем делегате приложения:

После #import ... и до реализации фактического appDelegate.

Не знаю, поможет ли это, но может быть хорошей отправной точкой.

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

@implementation AppDelegate // code for appDelegate
...