Subviews не отображаются во время Flip Transition - PullRequest
0 голосов
/ 16 марта 2011

Я делаю флип-переход между двумя подпредставлениями контейнера. Контейнерное представление НЕ является полноэкранным и не является корневым представлением контроллера представления (это его подпредставление, занимающее примерно нижнюю треть экрана).

Из двух дочерних представлений, переключаемых при флип-переходе (оба из них UIImageView), у одного из них по очереди есть два дочерних (опять же, типа UIImageView). Это подпредставление, которое «уходит» в результате перехода.

Как только начинается переход, выходящий экземпляр UIImageView переворачивается, но два его потомка немедленно исчезают. Во второй половине входящий экземпляр UIImageView появляется без проблем (у него нет дочерних элементов).

Я попытался сделать содержимое представления полноэкранным и непрозрачным, но безрезультатно. Я читал о contentMode, contentStretch и масках автоматического изменения размера, но, похоже, это не так.

Я использую анимационный блок старого стиля. Я попытался установить скрытое свойство входящего / выходящего подпредставлений внутри блока и добавлять / удалять их внутри блока, но результат тот же. Я даже пытался использовать современные синтаксические блоки кода Objective-C, но все равно без изменений.

Ответы [ 3 ]

0 голосов
/ 16 марта 2011

Я нашел ответ: дочерние объекты добавлялись непосредственно перед началом блока анимации (внутри того же метода, что и блок анимации, несколькими строками раньше).

Я тестировал добавление других детей ранее (скажем, в -viewDidLoad), и они остаются во время анимации.

Я предполагаю, что изменение иерархии представления включает в себя некоторую асинхронную прецессию за пределами однострочного «addSubview:», и новые дочерние элементы не успели вовремя стать частью анимации. Сам блок анимации является асинхронным, но определенное количество вещей обязательно должно быть исправлено к тому времени, когда вы его фиксируете (например, структура иерархии представления).

0 голосов
/ 30 сентября 2012

Фактическая проблема заключается в том, что добавление потомков непосредственно перед выполнением вашего блока анимации не отображается, потому что ваш код не успел сначала вернуться к основному циклу выполнения, где они фактически будут отображаться. Если вы добавите их в viewDidLoad, нет проблем. Если вы добавите их непосредственно перед анимацией, их отображение будет по существу перекрыто анимацией и не будет отображаться.

У меня была точно такая же проблема, а затем я выяснил ответ в Раздражающий флеш на UIView Flip Transition .

Удачи! Говард

0 голосов
/ 16 марта 2011

Попробуйте поместить ваши UIImageViews вместе с их детьми в два отдельных UIViews. Нажмите эти UIViews - их содержание не исчезнет.

...