В настоящее время я переношу свое приложение на ios 7 и часами застрял на новом контроллере навигации / управлении панелью.
Раньше, когда у нас был контроллер навигации, у нас был такой фрагмент:
UINavigationController *navController = [[UINavigationController alloc]initWithRootViewController:[[MainViewController alloc]init]];
В конструкторе интерфейсов у нас был выбор установить существующую панель навигации для представления, и все соответствовало содержанию реального представления.
Хорошо, теперь я понятия не имею, как правильно проектировать с помощью конструктора интерфейсов. У меня все еще есть фрагмент для инициализации моего navcontroller. Однако в конструкторе интерфейса для моего MainViewController, если я установил для строки состояния полупрозрачную или непрозрачную панель навигации, у меня будет смещение в 44 пикселя вверху (см. Ниже).
Конструктор интерфейсов _________________________ И результат
Теперь, если я установил для строки состояния значение none, смещения вверху нет, но поскольку вид на симуляторе меньше из-за панели навигации, нижняя часть представления в построителе интерфейса обрезана.
Конструктор интерфейсов _________________________ И результат
Я думаю, мне здесь что-то действительно не хватает, но я не могу найти ни одной темы или информации о яблоках в Руководстве по переходам iOS7 по этому поводу.
Спасибо за вашу помощь
РЕДАКТИРОВАТЬ
Как мы видим на изображениях, первым дочерним элементом представления является UIScrollView, который содержит обе метки, проблема не возникает, когда нет представления с прокруткой. Он также появляется, если это UITableView. Если метка находится за пределами UIScrollView, для этой метки нет смещения.
Ответы:
Хорошо, я нашел решение, я установил в своем контроллере свойство:
Я не совсем понимаю истинное преимущество этого свойства (или почему значение по умолчанию истинно)
Единственная документация, которую я нашел, была там:
Обновить
В iOS 11
automaticallyAdjustsScrollViewInsets
не рекомендуетсяТеперь вы должны использовать:
Я также рекомендую вам проверить этот вопрос и ответ на него, чтобы лучше понять эти свойства.
источник
UIScrollView
прокрутку my . Но без этого мне не избавиться от смещения. Weired ...Ответ @ Justafinger сработал и для меня.
Просто хотел добавить, что этот параметр также можно легко настроить из конструктора интерфейса.
источник
Я столкнулся с той же проблемой, но я обнаружил довольно странное свойство ViewController в построителе интерфейса, которое, похоже, вызывало это для меня. Есть набор флажков «Расширить края». Я удалил галочку «Under Top Bars», и все стало для меня правильно раскладываться.
источник
Если для параметра automaticAdjustsScrollViewInsets установлено значение YES (настройка по умолчанию), существует несоответствие в позиционировании прокрутки между ios6 и ios7, поэтому, чтобы сделать их согласованными, вам необходимо отключить этот параметр. Тем не менее, ios6 выйдет из строя, если он обнаружит автоматическиAdjustsScrollViewInsets, поэтому вам нужно либо сделать программное изменение автоматическиAdjustsScrollViewInsets условным на ios7, либо отключить эту опцию с помощью раскадровки / NIB
источник
У меня была аналогичная проблема, после увольнения viewController contentOffset из моего tableView был изменен на (0, -64).
Мое решение было немного странным, я пробовал все другие ответы, но безуспешно, единственное, что устранило мою проблему, - это переключить позицию tableView в дереве элементов управления .xib
это был первый элемент управления в родительском представлении вроде этого:
Я переместил tableView сразу после ImageView, и он сработал:
кажется, что установка представления таблицы в первую позицию вызывала проблему, а перемещение представления таблицы в другое положение устранило проблему.
П.Д. Я не использую ни autoLayout, ни раскадровки
надеюсь, это может кому-то помочь!
источник
Я тоже сталкиваюсь с этой проблемой.
UIScrollView
размер содержимого рассчитывается ОС как другие размеры, происхождение которых определяется системой ограничений - поэтому ОС вызывает сомнения.Как исправить - Вы должны явно определить размер содержимого
UIScrollView
:UIView
(я переименовал его вContentView
)ContentView.Weight = View.Weight
иContentView.Height = View.Height
источник
Похоже, что обходным решением является просмотр файла раскадровки как «iOS 6.1 и более ранних версий» (выберите файл раскадровки -> Инспектор файлов -> Документ Interface Builder -> Просмотреть как. Позиционирование подвидов в этом режиме показывает смещение.
источник
Спасибо, ребята, за решения! Я часами пытался решить проблему. Все было хорошо, когда панель навигации не использовалась, но все пошло наперекосяк, когда я встроил ViewController в NavigationController.
Я решил это, сняв флажки « Настроить вкладки прокрутки» и « Под верхними полосами» . Оба они расположены в инспекторе атрибутов ViewController. Бесконечно благодарен!
источник