UINavigationController постоянно повышает обзор на 20 пунктов, сохраняя прозрачность UINavigatinBar - PullRequest
0 голосов
/ 27 ноября 2011

У меня есть UINavigationController и UITabBar в моем приложении.

UINavigationController имеет полупрозрачную черную панель навигации следующим образом:

в делегате приложения:

[[UINavigationBar appearance] setBarStyle:UIBarStyleBlackTranslucent];
    [[UINavigationBar appearance] setAlpha:0.7];

Я также скрываю строку состояния и отображаю свою собственную интерпретациюстроки состояния в нижней прозрачной половине UINavigationBar, например:

  self.navigationController.view.frame = CGRectMake(0,-22,320,480);

Это работает после загрузки приложения: нижняя половина панели UINavigation прозрачна, и я могу показать свой собственный статусИндикаторы там.

Однако, как только я нажимаю на любую из вкладок TabBar, а затем возвращаюсь к исходному контроллеру, происходят 2 вещи: Представление, управляемое UINavigationController, смещается вниз, чтобы начать в нижней половине UINavigationBar.UINavigationBar больше не прозрачен.Это нарушает компоновку моего пользовательского интерфейса на ~ 20-22 пикселя.

Как я могу "убедить" свой пользовательский интерфейс запомнить его первоначальный макет и не сбросить его до того, каким он должен быть при выборе разных вкладок?

Спасибо.

1 Ответ

1 голос
/ 28 ноября 2011

Мое лучшее предложение для вас - не создавать все по индивидуальному заказу, но, поскольку вы, похоже, собираетесь выполнить всю работу по созданию собственного представления, я бы попробовал следующее:

  1. Убедитесь, чтоу вас нет кода в любом месте , который изменяет исходный вид после того, как вы добавили новые изменения.
  2. Проверьте движение назад и вперед между пустыми вкладками, на которых ничего нет, и посмотрите, не изменится ли что-либо висходный вид.

Если все остальное не удается, тогда, когда вы вызываете код, чтобы закрыть новые вкладки и вернуться к исходному представлению, повторно запустите весь предыдущий код, который вы использовали для настройки представления.,Вы можете облегчить себе и системе, если поместите весь код для изменения вида в «конструкторе» панелей.

Тогда все, что вам нужно будет сделать, это

-(void)ChangeTabs
{
    [UINavigationController dealloc];
    [UINavigationController alloc];
    [UITabView dealloc];
    [UITabView alloc];
}

Что-то простое, подобное этому, решило бы вашу проблему и по-прежнему работало эффективно.Это зависит от вас, но я бы определенно подумал о том, чтобы перейти к последнему, особенно если вы выполните несколько шагов, просто чтобы правильно настроить два бара.

Надеюсь, это поможет вам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...