Изменение размера перехода SubView после перехода

У меня есть контроллер представления контейнера и контроллеры дочернего представления (аналогично UITabViewController). При переходе между представлением одного контроллера дочернего представления и представлением другого контроллера дочернего представления я использую:

let oldView = // get reference to old view
let newView = // get reference to new view
UIView.transition(from: oldView!, to: newView!, duration: 0.3,
                  options: .transitionCrossDissolve, completion: nil)

Проблема здесь в том, что изменение размера newView происходит после завершения анимации перехода, что выглядит неприглядно.

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

Как мне изменить размер newView ДО перехода, а не после.

Заранее спасибо.


person plawres    schedule 04.06.2017    source источник
comment
Сам переход отлично работает с Auto Layout. Я только что проверил это. Вам нужно показать больше своего кода — особенно код, в котором вы добавляете и настраиваете дочерние контроллеры представления.   -  person Mischa    schedule 09.06.2017
comment
Как изменить размер (нового) представления контроллера дочернего представления, чтобы оно соответствовало размеру контейнера?   -  person Mischa    schedule 09.06.2017
comment
Вы пытались переопределить func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) и добавить в него свой переход?   -  person Hady Nourallah    schedule 10.06.2017


Ответы (1)


в вашем ViewController переопределить func viewWillTransition, так что это будет что-то вроде этого

override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) {
    let oldView = // get reference to old view
let newView = // get reference to new view
UIView.transition(from: oldView!, to: newView!, duration: 0.3,
                  options: .transitionCrossDissolve, completion: nil)

}
person Hady Nourallah    schedule 12.06.2017
comment
не забывайте, что этот метод также будет вызываться, если Экран повернется в ландшафтный или портретный режим. - person Marcel T; 13.06.2017
comment
спасибо за предупреждение, я должен был упомянуть об этом. - person Hady Nourallah; 13.06.2017