Порядок слоя UIImageView - PullRequest
1 голос
/ 26 января 2012

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

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

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

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

Ответы [ 2 ]

3 голосов
/ 27 января 2012

Полагаю, вы ищете следующие методы UIView:

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

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

2: yieldSubviewToFront: Перемещение указанного подпредставлениятак что он появляется поверх своих братьев и сестер.

- (void)bringSubviewToFront:(UIView *)view

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

- (void)sendSubviewToBack:(UIView *)view

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

1 голос
/ 26 января 2012

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

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

...