2010-10-24 3 views
1

В настоящее время у меня есть пользовательский интерфейс, встроенный в Interface Builder - он в основном состоит из фонового изображения и нескольких ярлыков. Мне нужно анимировать некоторые элементы (изображения) под ярлыками, но поверх фона, но мне также нужно нарисовать их в определенном порядке z.Изменить порядок рисования пользовательского интерфейса на iPhone

Я оглядывался и натыкался на CATransformLayer - я все еще смотрю в него. Это лучший способ управлять Z-образным изображением, чтобы имитировать 3D? Я не хочу использовать Open GL в качестве анимации я делаю будет очень просто поддельные 3D ...

ответ

2

фона:

На iPhone, UIViews есть подвид NSArray. Сначала создается корень, сначала создается UIWindow, затем его подчиненные по порядку, затем их подпункты. Кроме того, существует вторая иерархия: каждый UIView имеет массив CALayer. Корневой CALayer рисует сначала, а затем каждый CALayer в порядке.

Предложение:

Да, вы можете сделать это, как вы изложены. Однако код может быть немного проще, если вы делаете следующее:

В вашем конкретном случае используйте UIView для удержания фона. Дайте ему два подзапроса, изначально прозрачных, полноразмерных, с пружинами и распорками, установленными в Interface Builder, чтобы сохранить его в полном размере фона. Расположите их в виде контура интерфейса (-0), чтобы UIView ImageViewHolder указан перед UIView ButtonViewHolder.

Таким образом, вы можете вставлять и удалять UIImageViews из UIView ImageViewHolder UIView, и они будут нарисованы над фоном и ниже UIButtons.

+0

Спасибо! Итак, если я добавлю 3 разных UIImageViews в представление ImageViewHolder, будет ли представление, которое я добавляю последним или первым, нарисовать сверху? Кроме того, если первое представление, которое я добавил, рисует на дне, есть ли способ сохранить его сверху? –

+0

- [addSubview:] помещает его в конец, поэтому он рисует последний, но UIView имеет дополнительные методы, чтобы вы могли разместить его там, где вы хотите, в порядке рисования. Однако не используйте обычные методы NSMutableArray для изменения массива subviews. – DavidPhillipOster

+0

Спасибо за помощь. Похоже, я могу использовать такие вещи, как bringSubviewToFront, чтобы делать то, что я хочу :) –

Смежные вопросы