У меня есть метод создания titleView.Проблема, когда кадр UINaviationsItem titleView установлен неправильно, когда titleView настроен на анимацию mid push
- (void) makeTitleView {
UIImage * image = [UIImage imageNamed:@"myImage"];
UIImageView * imageView = [[UIImageView alloc] initWithImage:image];
self.navigationItem.titleView = imageView;
}
Это прекрасно работает при вызове в viewDidLoad
:
- (void)viewDidLoad
{
[self makeTitleView];
}
Однако, если вызывается после небольшой задержки (меньше, чем время pushViewController:animated:
анимации):
- (void)viewDidLoad
{
double delayInSeconds = 0.1;
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds * NSEC_PER_SEC));
dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
[self makeTitleView];
});
}
Тогда в заголовке указано неправильное f отросток:
В конце анимации каркасные сортирует вне.
Это может показаться умышленным, чтобы установить заголовок через 0,1 секунды, но эта ситуация возникает в одном из моих приложений. TitleView необходимо установить после сетевого запроса, который возвращается после следующего цикла цикла, когда результаты исходят из кеша.
Я могу избежать этой проблемы, но просто задерживается на более длительный период времени или вызывая метод в viewDidAppear:
, но оба решения вводят ненужные задержки. Есть ли другой способ исправить это?