CATransform3D всегда становится самым верхним видом

Я преобразую один слой UIView с помощью CATransform3D. Проблема в том, что я не могу отображать над ним другие элементы управления (которые не являются подвидами этого преобразованного представления).

Например, этот код:

[UIView flipTransitionFromView:self.standardImageView 
toView:self.flippedImageView 
duration:1.0f 
completion:NULL];    

[self.view insertSubview:flippedCloseButton aboveSubview:flippedImageView];

не работает - flippedCloseButton всегда находится за flippedImageView.

flipTransitionFromView - это метод, который просто выполняет указанное трехмерное преобразование.

Любые идеи, как решить эту проблему, приветствуются!

ИЗМЕНИТЬ:

Я решил это сам, изменив zPosition слоев просмотра:

self.flippedCloseButton.layer.zPosition = self.flippedImageView.layer.zPosition + 1;

Но это правильный способ сделать это?

Андрюс


person bolshas    schedule 26.10.2011    source источник
comment
Возможно, вы также перемещаете вид по оси Z?   -  person Bartosz Ciechanowski    schedule 26.10.2011


Ответы (1)


У меня была аналогичная проблема, но изменение zPosition не решило ее. ZPosition используется для придания слою перспективы (чтобы он выглядел меньше, когда z больше), но, как я полагаю, это не значит, что нужно простить последовательность видимости.

Я не до конца понимаю, что происходит, но при наличии нескольких подслоев на одном и том же "Уровне слоя" вопрос "что видно" поставлен нечетко. У меня даже было, что часть слоя была видна, а другая часть - нет.

В моем случае я решил эту проблему, поместив элементы, которые должны быть сверху, в суперслой. Это гарантирует, что они всегда видны.

Я ни в коем случае не профессионал, когда дело доходит до слоев и анимации, но в процессе обучения я сделал приложение (PerspectiveTest), которое объясняет некоторые основы того, как параметры слоя и перспектива работают вместе. Может быть полезно: http://itunes.apple.com/nl/app/perspectivetest/id481006743?mt=8

С уважением, Воппе.

person Voppe    schedule 22.11.2011