Xcode - insertSubview: atIndex: не работает, как я ожидал - PullRequest
1 голос
/ 06 сентября 2011

Я пытался использовать insertSubview:atIndex: для вставки подпредставления под другим. Проблема в том, что в большинстве случаев это не представление с более высоким индексом, а выше, которое было добавлено последним. Я заметил, что это работает нормально, если я выбираю индексы 0 и 1, но в моем случае одно представление должно быть как минимум с индексом 12, а другое - выше.

Вот пример кода:

UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(20, 100, 100, 100)];
label.text=@"LABEL";
[label setBackgroundColor:[UIColor whiteColor]];
[self.view insertSubview:label atIndex:13];
UIButton *btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
btn.frame=CGRectMake(20, 100, 100, 100);
[btn setBackgroundColor:[UIColor whiteColor]];
[self.view insertSubview:btn atIndex:12];

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

Что я делаю не так?

Заранее благодарю за помощь.

1 Ответ

4 голосов
/ 07 сентября 2011

Это не работает как CSS z-index - если у представления есть k подпредставления, вставка представления с любым индексом выше k будет иметь тот же эффект, что и добавление его с индексом k, илидругими словами, добавив его в качестве последнего (самого переднего) подпредставления.Подвиды поддерживаются как непрерывный список, а не как произвольно проиндексированный массив.В вашем случае у вас, вероятно, нет 14 подпредставлений для начала, поэтому вставка одного представления в 13, а другого в 12 не даст желаемого эффекта.

...