У меня есть следующая проблема: я хочу иметь константы, определяющие порядок подпунктов в массиве parentView.subviews
. Эти константы не обязательно должны быть индексами массива subview, но они могут.zPosition и subviews array
Что-то вроде этого:
#define VIEW1_INDEX 10 // or 0, if it's an index
#define VIEW2_INDEX 20 // or 1, if it's an index
И это будет означать, что parentView.subviews
массив {view1, view2}
.
Сначала я попытался использовать свойство ZPosition CALayer.
Скажем, у меня есть два подвала из parentView
: view1
и view2
, и они имеют одинаковые размеры и рамки. parentView.subviews
массив {view1, view2}
(в этом порядке). Если я
view2.layer.zPosition = VIEW2_INDEX;
view1.layer.zPosition = VIEW1_INDEX;
, чем порядок отображения подвиды изменений, но водопроводная обработку заказа и parentView.subviews
массив остается неизменным, так что я вижу view1
в верхней части, нажмите на него, но это водопроводная обрабатывается view2
, который это не то, что я ожидаю.
Так что мне нужно изменить порядок отображения и порядок обработки событий одновременно.
Моя лучшая идея заключается в том, чтобы использовать код, который устанавливает новый zPosition вместе с непрестанно код, который изменяет подвиды массив:
view2.layer.zPosition = 0;
NSUInteger* index = [parentView.subviews indexOfObject:view2];
[parentView exchangeSubviewAtIndex:0 withSubviewAtIndex:index];
Но это не кажется лучшим решением.
Другая идея состояла в том, чтобы использовать [parentView insertSubview:atIndex:]
вместо [parentView addSubview]
, но чем мне нужно будет, чтобы убедиться, что я вставив мнения в надлежащем порядке, который немного утомительно, так как у меня есть около 15 просмотров создается в различные места.
Итак, вот, наконец, вопрос: есть ли способ решить проблему, описанную в начале?