Я, вероятно, что-то неправильно сделал, потому что это выглядит немного глупо.
Я настраиваю пользовательское titleView (в форме UILabel) на моем UINavigationController, которое одинаково на каждой странице. Чтобы облегчить это, я создал функцию в своем делегате приложения, чтобы правильно отобразить метку. Затем я вызываю эту функцию в любом подзаголовке сразу после того, как я нажимаю ее в стек навигации.
Вот код (который, вероятно, имеет больше смысла, чем мое объяснение):Пользовательское titleView на UINavigationController неправильно анимируется
//In MyAppDelegate.m:
- (void)showTitleForNavigationController:(UINavigationController*) navController {
UILabel *label = [[UILabel alloc] init];
// set up label attributes
// ...
[label sizeToFit]; //without this line my label won't show at all
[navController.navigationBar.topItem setTitleView:label];
[label release];
}
// In SomeViewController.m, when pushing another controller onto the stack:
UIViewController *otherViewController = //initialize other view controller;
[self.navigationController pushViewController:otherViewController animated:YES];
[(MyAppDelegate*)[[UIApplication sharedApplication] delegate] showTitleForNavigationController:otherViewController.navigationController];
Моя проблема заключается в том, что, когда я нажимаю на следующий контроллер представления в стек, и новые слайды контроллера через плавно, в течение всего срока анимации этикетка прикрепляется к левому верхнему углу, прежде чем, наконец, щелкнуть на место после завершения анимации. Это выглядит странно и уродливо. Как правильно настроить ярлык так, чтобы он плавно переходил из следующего вида? Конечно, это просто, что мне не хватает ...
Имеет ли размер titleLabel сам размер? – leftspin
Если я правильно помню, у меня была функция, которая изменяла размер метки при изменении текста. – ylva