Louis - Спасибо за ваш вклад. Вот что я сделал, и мои текущие проблемы, которые я не понимаю.Управление уровнем iPhone - лучшая практика
Меню (2) - это UIImageViews, которые реагируют на прикосновения. Каждый из них - это собственный класс. «Спрайты», как вы их называли, также реагируют на прикосновение.
В .m, где я добавляю меню и спрайты к слою, я создал два слоя контейнера через этот код: menuContainer = [CALayer layer].
Я заказал их с помощью меню Контейнер над spriteContainer. Теперь спрайты перемещаются ниже меню - отлично! Но в процессе, спрайты перестали реагировать на прикосновение (я могу понять это, поскольку они находятся ниже слоя menuContainer), и меню перестали отвечать на прикосновения (не понимаю). Продолжая путать ситуацию, слой, добавленный в menuContainer, который реагирует на жесты мультитач, выталкивая ползунок, все еще читает мультитач и всплывает ползунок, но я не могу сдвинуть ползунок. Это меня полностью смутило.
Спасибо.
Мое приложение создает фоновый слой, а затем создает некоторые слои меню, которые всегда должны быть наверху. После этого я добавляю много движущихся слоев и очень быстро удаляю многие движущиеся слои.
Моя проблема в том, что мои слои меню (4) всегда должны быть перед другими слоями. Я подумал о создании слоя hiearchy и использовании метода insertsublayer: atindex: метод, который делает мои меню условным индексом 1000 и вставляет множество движущихся слоев с более низким индексом, например 200. Если я вставляю один слой в 200, а затем следующий в 200, первый слой, который был назначен на 200, сдвигается (до 201) или он сдувается?
Я попытался вставить слои с помощью вставки: ниже :, но это не дает мне желаемых результатов.
Спасибо за помощь.
Это хороший вопрос. Я также задаюсь вопросом, почему Apple не просто включила механизм Z-упорядочения в виде свойства Z-координат. – Amagrammer
Предполагая, что вы говорите о CoreAnimation-Layers, вы обнаружите, что на самом деле есть свойство zPosition, а также есть свободно настраиваемый CATransform3D. НО, оба этих свойства учитываются только у братьев и сестер. Следовательно, CoreAnimation нельзя использовать, если вам нужны полноценные 3D-объекты/анимации. Это порядок вставки, который учитывает, какой слой нарисован поверх или под другим. – Till
На самом деле, если вы поместите кучу слоев внутри CATransformLayer, вы можете воспроизвести некоторые довольно сложные трехмерные эффекты. Единственным реальным ограничением, 3-D-мудрый, является то, что CALayers должны быть прямоугольными. –