Как не допустить скольжения UIView вниз, когда для навигационного бара установлено значение ДА - PullRequest
1 голос
/ 10 декабря 2010

По сути, я вставил полноэкранный UIViewController в UINavigationController и хотел бы переключиться, если кажется, что навигация Barar скрыта.

Как бы то ни было, я обнаружил, что после того, как я установил навигацию BarHidden в YES, весь UIView сместится вниз на 44 пикселя, чтобы освободить место для навигационной панели.Как отключить это поведение?Поскольку я уже установил для barStyle значение UIBarStyleBlackTranslucent, и его скольжение на самом деле не нужно.

//init viewController
[self.navigationController pushViewController:viewController animated:YES];

Edit:

Я также имею дело с передачей прокрутки в контроллер навигации ...после настройки панели навигации, чтобы быть видимым.Мое представление прокрутки будет немного сдвинуто вниз, когда я прокручиваю представление вручную в этом состоянии, само представление scrollView снова сдвинется вверх.Мой вопрос заключается в том, как предотвратить скольжение scrollView вниз.

Размер кадра остается таким же, как перед тем, как вид скользит вниз или вверх.

Ответы [ 8 ]

1 голос
/ 11 декабря 2010

Я решил эту проблему, добавив scrollView в UIView и установив UIView в качестве представления UIViewController.

1 голос
/ 10 декабря 2010

Попробуйте сбросить рамку просмотра.Сделайте что-то вроде этого после того, как вы установили панель на скрытую:

viewController.frame  = self.navigationController.frame;

Вы всегда можете разбить ее там и посмотреть, что это за значения, и даже построить соответствующую рамку, чтобы подогнать ее.Я должен был сделать это раньше ...

0 голосов
/ 11 августа 2016

self.navigationController.navigationBar.alpha = 0.0;

это может быть простым решением

0 голосов
/ 11 марта 2016

Я попытался, работает только в том случае, если переместить навигационную панель с ее источником y и изменить альфа-представление навигационной панели на 0.f;если хочешь показать обратно, просто сделай наоборот

0 голосов
/ 16 июля 2015

Ни один из ответов здесь не работал для меня.Вместо этого вы можете сбросить вставку на UIScrollView во время viewDidLayoutSubviews(), как показано ниже (в Swift):

override func viewDidLayoutSubviews() {
    super.viewDidLayoutSubviews()

    // prevent the scrollview from adding some inset for the status bar
    self.detailScroll.contentInset = UIEdgeInsetsZero
}
0 голосов
/ 26 июля 2011

Может иметь какое-то отношение к contentInset.При установке свойства navigationBarHidden, если корневым представлением текущего контроллера представления является представление с прокруткой, его contentInsets.top устанавливается на высоту верхних полос.

Чтобы предотвратить это, сразу после строки, которая меняет навигациюBarHidden,сбросьте self.scrollView.contentInset к любому исходному значению.

0 голосов
/ 23 февраля 2011

Добавьте следующее в ваш метод viewDidLoad:

self.wantsFullScreenLayout = YES;

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

0 голосов
/ 10 декабря 2010

Я думаю, что это ошибка / особенность UINavigationController, и я не знаю, как ее отключить.Это отстой.Мне всегда приходилось настраивать свои рамки просмотра вручную.Это намного сложнее, чем должно быть при работе с вращением, просмотром прокрутки ....

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