2013-08-20 2 views
2

У меня есть этот порядок подвидов:Принеси глубоко размещены подвид до самого переднего

  • Родитель View Controller
    • подвид 1
    • подвид 2
      • Subsubview 1
      • Subsubview 2
        • Subsubsubview 1

Теперь моя потребность принести очень глубокой Subsubsubview 1 до самой передней части экрана. Я просмотрел документацию, и bringSubviewToFront может не работать здесь, поскольку он только подводит подпрос к фронту относительно его родителя. Привлечение родителей (Subsubview 2) на фронт вместе с ним это не вариант, потому что он должен остаться ниже подвид 2.

переупорядочение almsot невозможно, это графика зависит от порядка и имеет много aniamtions привязываться к Это.

+0

'[parentView bringSubviewToFront: childView];' должен делать работа –

ответ

5

Вы можете попробовать поместить его на само окно:

[[UIApplication sharedApplication].keyWindow addSubview: Subsubsubview1]; 

Или использовать следующие методы, чтобы помочь с переназначения:

insertSubview:atIndex: 
insertSubview:aboveSubview: 
insertSubview:belowSubview: 
+0

Я боюсь, что может случиться, у меня рушится анимация, привязанная к ней вместе со своими родителями :( – Michal

+0

Мне пришлось изменить порядок взглядов, и я использовал методы, которые вы перечисленные, поэтому я просто хочу отметить ваш ответ как правильный, чтобы закрыть эту тему. Спасибо за помощь! – Michal

1

Вы можете использовать:

- (void)insertSubview:(UIView *)view belowSubview:(UIView *)siblingSubview; 
- (void)insertSubview:(UIView *)view aboveSubview:(UIView *)siblingSubview; 

Определение :

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

Надеюсь, это поможет.

1

Установите тег глубоко захоронены подвид:

[deeplyburiedSubview setTag:USE_A_DEFINED_CONSTANT_NOT_A_MAGIC_NUMBER];

Тогда в самой верхней точки зрения просто называют:

[topMostView bringSubviewToFront:[topMostView viewWithTag:USE_A_DEFINED_CONSTANT_NOT_A_MAGIC_NUMBER]];

+0

Это выглядит очень многообещающе, позвольте мне попробовать! :-) – Michal

+0

Нет проблем.Использование тегов является слегка спорным предметом, и я слышал, как некоторые инженеры Apple решают их, но я нашел их отличными для таких вещей. YMMV :) – Cocoadelica

+0

К сожалению, это не доводит его до вершины, хотя :(Я установил тег, идентифицировал представление в родительском, назвал функцию, но он не впереди:/ – Michal