После обновления до Xcode 5 панели навигации во всех представлениях моего приложения сместились вниз. Вот несколько снимков экрана: первый показывает все в виде, когда он снят, а второй показывает все в нетронутом виде. Панель поиска должна начинаться там, где находится панель навигации.
Кто-нибудь знает, как я могу это исправить?
изменить: я пробовал эту ранее рекомендацию:
if ([self respondsToSelector:@selector(edgesForExtendedLayout)])
self.edgesForExtendedLayout = UIRectEdgeNone;
Но это дает очень странные результаты.
Это может быть связано с тем, что у меня есть «слайд-меню» под этим контроллером представления, которое появляется из-за прозрачности панели навигации.
ios
objective-c
ios7
uinavigationbar
uistatusbar
Сэм D20
источник
источник
Ответы:
Установите для свойства полупрозрачности панели навигации значение NO :
Это исправит то, что представление не будет заключено в рамку под панелью навигации и строкой состояния.
Если вам нужно показать или скрыть панель навигации, используйте
в вашем
viewDidLoad
методе.источник
viewDidLoad
но изменений не произошло.По
iOS 7
умолчанию для всех полупрозрачных свойств контроллера установлено значение ДА, поэтому для этой проблемы вы устанавливаете полупрозрачное свойство как НЕТ .источник
Вы можете отключить «Расширить края» в инспекторе атрибутов контроллера представления на этом экране (как показано на изображении ниже):
источник
Это работает и на iOS 8.1.
источник
Если вы хотите сохранить прозрачность на себе
navigationBar
, в концеviewDidLoad
или в своемviewWillAppear
добавьте эту строку кода:Каким-то образом, если ваш
scrollView
подкласс (UITableView
,UICollectionView
и т. Д.) Имеет значениеindex
0 в вашем текущем представленииsubviews
, он автоматически настроит вставки в соответствии с вашимnavigationBar
. И это не должно повлиять на ваш пользовательский интерфейс в версиях до iOS7.РЕДАКТИРОВАТЬ Если вы инициализируете свой
UITableView
программно, лучше всего добавить его в представление, используя этот[self.view insertSubview:self.tableView atIndex:0];
источник
[self.view insertSubview:self.tableView atIndex:0];
вместо того, чтобы отправлять его на задний план после добавления.Swift 4 :
Установите следующую строку кода в методе viewDidLoad:
источник
Вы можете добавить этот метод в свой контроллер представления, как показано на этом URL :
источник
Другой подход - установить
self.automaticallyAdjustsScrollViewInsets = YES;
на вашем контроллере представления. По умолчанию это включено. Но в вашем случае:Я вижу, вы используете EGORefreshHeaderView. Он играет с contentInset UITableView. Поэтому, когда вы его отпустите, заголовок сбросит верхнюю вставку вместо восстановления предыдущего значения.
источник
Если вы хотите иметь полный контроль над представлениями и избегать ошибочных настроек iOS, создайте подкласс UITableView и настройте вставки (как прокрутки, так и индикаторы) в - (void) willMoveToWindow: (UIWindow *) newWindow. Работает для меня.
источник
Другой вариант - открыть файл Info.plist в режиме исходного кода и ввести следующую информацию:
Надеюсь это поможет.
источник