Настройка ширины и высоты для контроллера дочернего представления не работает

Я пытаюсь установить ширину и высоту фрейма моего дочернего контроллера, но это не работает. Вот что я пытаюсь сделать:

  let frame = UIScreen.main.bounds
  let vc = FieldsTableViewController()
  addChild(vc)
  view.addSubview(vc.view)        
  vc.didMove(toParent: self)
  vc.view.frame = CGRect(x: (frame.maxX+frame.minX)/2, y: 300, width: 200, height: 5)

Позиции x и y установлены правильно, но что бы я ни пытался, я не могу установить ширину и высоту. Странно то, что я использую тот же дочерний vc в другом vc с точно таким же кодом, как указано выше, и у меня нет проблем с установкой там ширины и высоты.

Я также пытался использовать Auto-Layout, но не смог заставить его работать с дочерним контроллером представления (возможно ли это? Я не нашел ни одного примера).

Спасибо за вашу помощь.


person Farid M    schedule 19.06.2020    source источник
comment
Вы смотрели на UIContainerView? Он выполняет практически всю работу за вас.   -  person DonMag    schedule 19.06.2020
comment
Насколько я понимаю, UIContainerView существует только в раскадровке, потому что на самом деле это просто UIView. Я думаю, что уже делаю программный эквивалент UIContainerView. Я вообще не использую раскадровки (может быть, мне следует указывать это всякий раз, когда я публикую вопрос?).   -  person Farid M    schedule 20.06.2020


Ответы (1)


Я нашел способ обойти это. Наконец-то я понял, что проблема возникает, когда я устанавливаю представление моего контроллера представления, например:

let v = PlayerSelectionView()
view = v

Я не уверен, почему это вызвало описанную проблему, но добавление моего представления в качестве подвида вместо этого исправило ее:

let v = PlayerSelectionView()
v.frame = view.frame
view.addSubview(v)

Теперь я могу редактировать ширину и высоту моих дочерних контроллеров представления.

person Farid M    schedule 20.06.2020