Пример свойств topLayoutGuide и bottomLayoutGuide UIViewController

Я буду признателен, если кто-нибудь сможет показать, как использовать свойства topLayoutGuide и bottomLayoutGuide UITableViewController, представленные в iOS 7. Спасибо.

Ответы

Ответ 1

Свойства topLayoutGuide и bottomLayoutGuide наследуются от UIViewController и реализуют UILayoutSupport. Они предназначены для использования с AutoLayout, но могут также использоваться напрямую без использования AutoLayout.

В случае topLayoutGuide свойство указывает наивысшую вертикальную область содержимого, которую вы не хотите отображать за прозрачной или прозрачной панелью UIKit (например, статус или панель навигации). Итак, если ваш контроллер представления был помещен в стек UINavigationController, topLayoutGuide сообщит вам, сколько точек в верхней части экрана находится строка состояния и панель навигации. Вы можете использовать это значение для прокрутки содержимого в UIScrollView только под панелью навигации или убедиться, что другой контент в вашем представлении не покрывается UINavigationBar.

Имейте в виду, что значение topLayoutGuide зависит от контроллера просмотра и от того, содержалось ли оно в другом контроллере представления. Из документации Apple UIViewController:

Объект, который сдерживает значение для этого свойства, зависит от независимо от того, является ли контроллер представления дочерним элементом представления контейнера контроллер (например, контроллер навигационной панели или панели вкладок) следующим образом:

• Контроллер представления не находится в пределах ограничений контроллера контейнера это свойство указывает нижнюю часть строки состояния, если она видна, или иначе указать верхний край представления контроллера вида.

• Контроллер вида в контроллере представления контейнера не устанавливает этот стоимость имущества. Вместо этого контроллер контроллера контейнера ограничивает значение, указывающее:

  • Нижняя часть панели навигации, если отображается панель навигации

  • Нижняя часть строки состояния, если только отображается строка состояния

  • Верхний край представления контроллеров представления, если ни строка состояния, ни панель навигации не видны.

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

CGFloat length = self.topLayoutGuide.length;
_feedback.frame = CGRectMake(_feedback.frame.origin.x, length + 5.0, _feedback.frame.size.width, _feedback.frame.size.height);

Использование bottomLayoutGuide в точности похоже на использование topLayoutGuide, за исключением того, что bottomLayoutGuide относится к наименьшей вертикальной протяженности для контента.