У меня есть контроллер навигации в качестве корня моего приложения, и я использую прокси-сервер внешнего вида для настройки внешнего вида на iOS 5, но для iOS 4 я надеялся использовать категорию для переопределения drawRect :, это было хорошо , за исключением того, что все панели навигации были затронуты, как и следовало ожидать от категории.Custom NavigationBar
Я не хочу вмешиваться в всплывающие окна «системы», такие как композитор почты или композитор SMS, я хочу, чтобы их бары оставались синими и похожими на систему.
Я пробовал создать свой собственный UINavigationController с его xib и изменить класс NavigationBar на пользовательскую подсистему UINavigationBar. Но результаты вообще не влияют на экран.
Мне известно следующее сообщение, но не удалось найти какие-либо решения для запуска, как ожидалось. How to subclass UINavigationBar for a UINavigationController programmatically?
Моей первая попытка, которая делает работу, но использует недокументированные setNavigationBar: метод:
_myNavigationController = [[UINavigationController alloc] initWithRootViewController:someVC];
if([[BT_NavigationController class] respondsToSelector:@selector(appearance)]){
// some iOS 5 magic in here !
[_myNavigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"topbar.png"];
}else{
// Probably looking at app store refusal
CustomBar * bar = [[CustomBar alloc] init];
// [_myNavigationController setNavigationBar: bar];
[bar release];
}
[parentView presentModalViewController:_myNavigationController animated:YES];
Чтобы избежать этого, я создал UINavigationController, который я также имел XIB для, переназначения класса навигационной панели для моего пользовательского класса, но размещение точек останова в методе drawRect: я вижу, что это не вызывается.
Почему это было, кажется, что мой код не загружает нип, и поэтому не осознавать, что панель nab должна быть моим пользовательским классом, а не UINavigationBar.
Любые советы были бы полезными, спасибо.
Похоже, что когда я установил это для своего контроллера Nav, за ним помещаются заголовки заголовков и штрих-заголовков подробных представлений. – Daniel
yep. вы должны использовать sendSubviewToBack: (или insertSubview: atIndex :) навигационной панели. Это зависит от подзонов вашего навигационного блока. – teriiehina