Структура ячейки разрушается после UIView.transition - PullRequest
0 голосов
/ 28 сентября 2018

В одном из моих контроллеров я использую UICollectionView с двухсторонними ячейками (на лицевой стороне ячейки есть кнопка, и, если пользователь нажимает на нее, ячейка должна показать ему / ей другую сторону ячейки).

поэтому у меня в классе ячеек это:

firstView = UIView()
...
self.addSubview(firstView)

infoView = UIView()
...
self.insertSubview(infoView, belowSubview: firstView)

В обоих представлениях много элементов, для структурирования этих элементов я использую в основном ограничения и привязки визуального формата.

т.е.

let topFirstViewConstraint = firstView.topAnchor.constraint(equalTo: self.topAnchor, constant: 4)
        allConstraints.append(topFirstViewConstraint)
...
let goButtonCenter = goButton.centerXAnchor.constraint(equalTo: firstView.centerXAnchor, constant: 0)
        allConstraints.append(goButtonCenter)

Для переключения между лицом и видом сзади я использую UIView.transition:

UIView.transition(from: firstView, to: infoView, duration: 0.2, options: .transitionFlipFromLeft) { (success) in

        }

Это работает как шарм, я неу меня вообще есть ошибки autoLayout.

Но если я пытаюсь переключиться с ограничений firstView на infoView firstView, то это становится диким и наоборот (у меня все еще нет ошибок, но я знаю,как должны выглядеть эти взгляды, и это беспорядок).Я пытался использовать self.updateConstraints() при закрытии перехода, но это не работает.

Кто-нибудь испытывал что-то подобное?

1 Ответ

0 голосов
/ 28 сентября 2018

https://developer.apple.com/documentation/uikit/uiview/1622562-transition говорит:

fromView: начальный вид для перехода.По умолчанию это представление удаляется из своего суперпредставления как часть перехода.

Что происходит с ограничениями, когда одна сторона ограничения удаляется из суперпредставления?Это определенно больше не работает.

Что вы можете попробовать

Обсуждение: Этот метод предоставляет простой способ перехода от представления в параметре fromView к представлению в toViewпараметр.По умолчанию представление в fromView заменяется в иерархии представлений представлением в toView. Если оба представления уже являются частью вашей иерархии представлений, вы можете включить параметр showHideTransitionViews в параметре параметров, чтобы просто скрыть или показать их.

...