Порядок слоев UIImageView

У меня возникли проблемы с пониманием того, как выполняется многослойность в Xcode. У меня есть .xib с представлением, в этом представлении есть 6 UIImageView, каждое из которых содержит другое изображение. Я создал IBOutlets для каждого из них, поэтому я могу изменить изображение во время выполнения.

Теперь я хочу изменить порядок, в котором UIImageViews рисуются во время выполнения, поэтому изображениеA сзади теперь рисуется поверх всего остального. Как изменить порядок слоев? Первоначально я пытался удалить все подпредставления и использовать [self.view insertSubview: atIndex: ], чтобы посмотреть, могу ли я изменить порядок отрисовки таким образом, но мой код дает сбой.

Может ли кто-нибудь сказать мне правильный метод для этого, пожалуйста?

Заранее спасибо, Эллиот


person Elliott D'Alvarez    schedule 26.01.2012    source источник


Ответы (2)


я думаю, вы ищете эти методы UIView:

1: exchangeSubviewAtIndex:withSubviewAtIndex: обменивает подпредставления по указанным индексам.

- (void)exchangeSubviewAtIndex:(NSInteger)index1 withSubviewAtIndex:(NSInteger)index2

2: BringSubviewToFront: перемещает указанное подпредставление так, чтобы оно отображалось поверх своих братьев и сестер.

- (void)bringSubviewToFront:(UIView *)view

3: sendSubviewToBack: перемещает указанное подпредставление так, чтобы оно отображалось позади своих братьев и сестер.

- (void)sendSubviewToBack:(UIView *)view

с помощью этих методов вы можете поменять порядок подвидов, чтобы один UIView отображался поверх другого в их супервизоре... если это то, о чем вы спрашивали....

person meronix    schedule 26.01.2012
comment
Отлично спасибо! Завтра я рассмотрю эти методы, так как они похожи на то, что я ищу. - person Elliott D'Alvarez; 27.01.2012
comment
Хороший. Я никогда не искал пару «принести/отправить». Пришлось делать это вручную. - person smparkes; 27.01.2012

Сбой может быть вызван тем, что когда вы удаляете образ из его родителя, его счетчик сохранения обнуляется и освобождается.

Если вы просто хотите поменять местами два вида, см. - (void)exchangeSubviewAtIndex:(NSInteger)index1 withSubviewAtIndex:(NSInteger)index2 на UIView. Если вы хотите выполнить более сложный обмен, вы можете удалить и прочитать добавление, просто убедитесь, что вы сохранили представление, которое вы удалили (несмотря на ARC).

person smparkes    schedule 26.01.2012
comment
Да, у меня такое чувство, что вы правы, и это вызывает сбой, я попробую использовать метод обмена, поскольку он должен делать то, что мне нужно. - person Elliott D'Alvarez; 27.01.2012