Контейнер дочернего представления не соответствует требуемой ширине в swift

У меня есть контейнер просмотра, чтобы показать только 1 экран с телефоном и 2 с вкладкой. Итак, в ViewDidLoad(), я использую метод

 func addListController(){
    self.addChildViewController(listController!)
    listController?.view.frame = defineListSize()
    self.containerView.addSubview((listController?.view)!)
    listController?.didMove(toParentViewController: self)
}

где метод defineListSize определяет размер первых детей

 func defineListSize() -> CGRect {
    var rect :CGRect = CGRect(x: 0, y: 0, width: self.containerView.frame.size.width, height: self.containerView.frame.size.height)

    switch (deviceIdiom) {
    case .tv:
        rect = CGRect(x: 0, y: 0, width: self.containerView.frame.size.width/2, height: self.containerView.frame.size.height)
    case .pad:
        rect = CGRect(x: 0, y: 0, width: self.containerView.frame.size.width/2, height: self.containerView.frame.size.height)
    case .phone:
        rect = CGRect(x: 0, y: 0, width: self.containerView.frame.size.width, height: self.containerView.frame.size.height)
    case .unspecified: break
    default: break
    }

    return rect
}

Тем не менее, когда на планшете добавляются первые дочерние элементы, он всегда равен половине окна просмотра контейнера. Хотя в отладке я вижу, что у прямоугольника хорошие данные. Я пытался использовать addListController() в viewWillAppear или viewWillLayoutSubviews(), но тот же результат. Второе дочернее представление, когда добавлено с правой стороны, имеет хорошие размеры и обрезает правую часть первого дочернего.

Так в чем же проблема? Спасибо

0 ответов

Другие вопросы по тегам