2016-02-25 4 views
1

Я добавляю пользовательские представления в UIPageViewController, который встроен внутри UINavigationController, из-за этого мне нужно добавить прописку 20.0 с верхней части каждого дочернего представления внутри контейнера UIPageViewController, чтобы они сидят аккуратно под навигационной панелью.UIView add padding сверху

Я в настоящее время использую layoutMargins свойство UIView, в установлении новых края врезки на взгляд, прежде чем он будет загружен в память, вот мой вспомогательный метод для создания нового вида:

private func instanciateViewController(pageType: ViewType) -> UIViewController? { 

    var pageView : UIViewController? 

    switch(pageType) 
    { 
     case .SHOP : 
      pageView = storyboard!.instantiateViewControllerWithIdentifier("ShopFloorViewController") 
      break 
     case .TASKS : 
      pageView = storyboard!.instantiateViewControllerWithIdentifier("TaskListTableViewController") 
      break 
     case .PERSONNEL : 
      pageView = storyboard!.instantiateViewControllerWithIdentifier("PersonnelListViewController") 
      break 
    } 
    pageView!.view.layoutMargins = UIEdgeInsetsMake(20, 0, 0, 0) 
    return pageView 
} 

Линия: pageView!.view.layoutMargins = UIEdgeInsetsMake(50, 0, 0, 0) обеспечивает правильную вставку для первого загруженного экрана, однако любое взаимодействие на сцене затем вызывает просмотр повторно рендеринга без вставки.

Как я могу сделать вставки на дочерних видах внутри моего UIPageViewController постоянными?

ответ

2

Попробуйте это (я не тестировал этот конкретный случай, но имеет смысл). Внутри UIPageViewController переопределить viewWillLayoutSubviews. По умолчанию реализация этого метода ничего не делает, поэтому просто напишите свой собственный код внутри. Внутри метода пройдите через подпункты и отрегулируйте вставки кромок. Надеюсь, это должно сработать.

+0

Отлично, работал как шарм. Похоже, что 'layoutSubviews' вызывается всякий раз, когда происходит взаимодействие. Не могу поверить, что я не думал попробовать это :) – Alex

+0

Он вызывается каждый раз, когда подсмотры нужно перерисовывать по любой причине, включая поворот. Поэтому убедитесь, что вы также проверили вращения. – Eppilo

+0

Gotcha, я новичок в iOS, поэтому все это для меня. Наверное, мне нужно больше узнать о документации жизненного цикла обзора ... еще раз спасибо – Alex

Смежные вопросы