uinavigationbar перемещается вверх при возврате из неактивного состояния - PullRequest
1 голос
/ 29 декабря 2011

У меня есть собственный заголовок изображения над панелью навигации. Я делаю это с помощью этого кода:

self.navController.view.frame = CGRectMake(0.0, 0.0, 320.0, 480.0); 
self.navController.navigationBar.frame = CGRectMake(0.0, 73.0, 320.0, 44.0);

UIView *checkNav = [self.navController.view viewWithTag:9999];
if (checkNav == nil) {
    UIImageView *imgView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"header-logo.jpg"]];
    imgView.tag = 9999;
    [imgView setFrame:CGRectMake(0.0, 23.0, 320.0, 50.0)];
    [self.navController.view addSubview:imgView];
}

Это прекрасно работает. Но когда приложение становится неактивным (нажимает главную кнопку «Домой» на iphone), а затем вы возвращаетесь в приложение, панель навигации перемещается в положение по умолчанию в верхней части экрана и скрывается за моим пользовательским изображением заголовка.

Я пытался добавить код в applicationDidBecomeActive, но это не помогает. Любая помощь будет принята с благодарностью.

Спасибо!

Ответы [ 2 ]

2 голосов
/ 29 декабря 2011

Вы получаете предупреждение об этом в документах :

За небольшим исключением, вы никогда не должны изменять объект панели навигации напрямую.Разрешается изменять barStyle или полупрозрачные свойства навигационной панели, но вы никогда не должны изменять значения фрейма, границ или альфа-канала напрямую

Сказав это, вы должныможно получить эффект, повторив указанный выше код в applicationDidBecomeActive или applicationWillEnterForeground, при условии, что у вас есть указатель на контроллер навигации оттуда.Вы можете обнаружить, что требуется скрытие и повторное отображение панели навигации (немного хак, но это может помочь - у меня была похожая проблема с скрытием / отображением строки состояния, когда панель навигации не перемещалась в нужное место)

0 голосов
/ 29 декабря 2011

Как насчет ввода кода в viewWillAppear?

...