Как создать подкласс UINavigationBar для работы с Three20 / iOS5? - PullRequest
1 голос
/ 14 октября 2011

Многие из вас, вероятно, заметили, что мы больше не можем создать категорию для переопределения UINavigationBar drawRect в iOS5.Сейчас на самом деле я не вижу хорошего способа реализовать эту настройку без использования подкласса UINavigationBar и установить его внутри navigationController-> navigationBar в моем MainWindow.xib.Однако TTNavigator не распознает этот navigationController, поскольку каждый TTViewController имеет свой собственный суперкласс TTNavigationController.

1 Ответ

3 голосов
/ 14 октября 2011

Я не знаю, как решить эту проблему для Three20, но в целом для поддержки IOS 5 вы можете использовать этот метод

UIImage *image = [UIImage imageNamed:@"header.png"];

if([navigationBar respondsToSelector:@selector(setBackgroundImage:forBarMetrics:)] ) {
    //iOS 5 new UINavigationBar custom background
    [navigationBar setBackgroundImage:image forBarMetrics: UIBarMetricsDefault];
} 
else{
    UIImageView *imgView = [[[UIImageView alloc] initWithImage:image] autorelease];
    [imgView setUserInteractionEnabled:NO];
    [imgView setTag:TOOLBAR_TAG];
    [navigationBar insertSubview:imgView atIndex:0];
}
...