Быстро и грязно: вы сможете добавить пользовательскую метку на панель навигации с помощью
[navigationBar addSubview:yourLabel];
Просто установите рамку метки так, чтобы она находилась по центру на панели навигации, и измените ее альфа-значение, как вы это сделалидо.Тем не менее, это настоящий взлом, и я не уверен, как он себя ведет, когда вы нажимаете и выталкиваете контроллеры представления.
РЕДАКТИРОВАТЬ:
Хорошо, вот и все.Сначала предположим, что у нас есть панель навигации, содержащая элемент навигации со свойством title (не свойство titleView), а также набор элементов кнопок левой и правой панели.
UINavigationBar* bar = [[UINavigationBar alloc] initWithFrame:CGRectMake(0, 0, 320, 44)];
[self.view addSubview:bar];
UINavigationItem* anItem = [[UINavigationItem alloc] initWithTitle:@"HeyHey"];
UIBarButtonItem* leftItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:nil action:nil];
UIBarButtonItem* rightItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:nil action:nil];
anItem.leftBarButtonItem = leftItem;
anItem.rightBarButtonItem = rightItem;
bar.items = [NSArray arrayWithObject:anItem];
[leftItem release];
[rightItem release];
[anItem release];
Теперь выможет исчезнуть вид заголовка следующим образом:
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:1];
[[[bar subviews] objectAtIndex:0] setAlpha:0];
[UIView commitAnimations];
Я не знаю, всегда ли вид заголовка имеет индекс 0, но вы можете проверить свой конкретный случай, используя
for (UIView* aView in bar.subviews) {
NSLog(@"%@", aView);
}
Для заголовка вы увидите что-то вроде
<UINavigationItemView: 0x7566530; frame = (0 0; 0 0); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x75665e0>>