Просмотреть изменения кадра на Скрыть / Показать панель навигации? - PullRequest
6 голосов
/ 15 октября 2011

В Моем Приложении

У меня есть Navigation Controller с корневым контроллером представления.

Чтобы показать / скрыть панель навигации, которая работает нормально.

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    BOOL navbarhide=[self.navigationController.navigationBar isHidden];
    [self.navigationController setNavigationBarHidden:!navbarhide animated:YES];


}

Работает хорошо, но,

Когда панель навигации скрыта, меняется рамка просмотра.

Если панель навигации не скрыта, вид изменится.

When navigation bar is not hidden ..see the press button and view's origin is below the bar, I dont want like this I want it to stick at navigation bar's origin[at the top of the page]

It is fine view is at its original position when bar is hidden. I want view to be stick  at this position and turn bar hide/show without changing the view's frame.

Заранее спасибо ...

Редактировать настройкиset self.view.frame не дает никакого эффекта.

Ответы [ 7 ]

11 голосов
/ 18 июля 2014

У меня такая же проблема.В моем проекте это потому, что вид - это вид с прокруткой.Если ваше представление является представлением с прокруткой или представлением таблицы, вы можете попробовать это:

Я добавляю приведенный ниже код в контроллер.

self.automaticallyAdjustsScrollViewInsets = NO;

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

3 голосов
/ 31 октября 2012

Вы не можете изменить кадр self.view. Я не использую setNavigationBarHidden:, чтобы скрыть панель навигации, а непосредственно изменяю фрейм self.navigationController.navigationBar. Таким образом, self.view.frame не изменится.

CGRect frame = (navBarhidden) ? CGRectMake(0, -24,self.view.bounds.size.width,44) :      CGRectMake(0, 20,self.view.bounds.size.width,44);
self.navigationController.navigationBar.frame = frame;
2 голосов
/ 29 января 2016

У меня была эта проблема при отображении UIView в полноэкранном режиме.Изменение размера рамы сработало для меня.(Swift)

скрытие навигационной панели:

    self.navigationController!.navigationBar.hidden = true
    self.view.frame.origin.y -= 64
    self.view.frame.size.height += 64.0

повторное отображение навигационной панели:

    self.navigationController!.navigationBar.hidden = false
    self.view.frame.origin.y += 64
    self.view.frame.size.height -= 64.0
0 голосов
/ 16 августа 2018
scrollView.contentInsetAdjustmentBehavior = .never
0 голосов
/ 15 октября 2011

изменить self.view.frame, когда вы показываете и скрываете навигационные панели

0 голосов
/ 15 октября 2011

Я думаю, что это может помочь вам

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
 {
BOOL navbarhide=[self.navigationController.navigationBar isHidden];
[self.navigationController setNavigationBarHidden:!navbarhide animated:YES];
 if(navbarhide)
 self.view.frame=CGRectMake(0,0, 320, 480);
 else
  self.view.frame=CGRectMake(0,44, 320, 480);
 }
0 голосов
/ 15 октября 2011

Я думаю, что это функциональность по умолчанию, которую вы не можете изменить, но вы меняете положение кнопки, используя следующий код

myButton.frame = CGRectMake (X, Y, Высота, Ширина);

после скрытия панели навигации.

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