Как создать подкласс UINavigationBar для работы с Three20/iOS5?

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

1 ответ

Решение

Я не знаю, как решить это для 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];
}
Другие вопросы по тегам