Взгляните сюда... https://stackoverflow.com/a/34736594/294884
в iOS порядок, в котором вы размещаете одноуровневые представления в Инспекторе в раскадровке, конечно же, становится их z-порядком.
Я был поражен, узнав, что это похоже, неприменимо к любым таким представлениям, которые являются представлениями-контейнерами.
Для проверки просто создайте сцену с несколькими одноуровневыми представлениями; пара из них — контейнерные представления. Бегать. Измените что-нибудь невинное в классе контроллеров представления контейнера (скажем, добавьте ViewDidLoad, ограничение или оператор печати) и повторите попытку. Представления представления контейнера случайным образом перемещаются вверх.
Я считаю, что единственный обходной путь: вручную расставить их по порядку в представленииWillAppear, что безумно.
1) может быть, я просто что-то напортачил - может быть, есть настройка ("соблюдать порядок раскадровки - даже для представлений контейнера!")
2) Я ломал голову, пытаясь понять, как «автоматизировать» обходной путь. Вам нужно будет прочитать порядок всех представлений из раскадровки по мере ее загрузки? А затем «исправить» это во время viewWillAppear. Сложный.
3) может быть какая-то хитрость .. в prepareForSegue скажем? .. заставить их быть в правильном Z-порядке, как и любой вид!??
Исправление...
Одно нелепое исправление для этого только что пришло мне в голову.
Скажем, у вас есть участок раскадровки с 10 одноуровневыми представлениями, и, скажем, 4 из них являются представлениями-контейнерами. (Таким образом, на самом деле это не будет работать — как описано здесь.)
На самом деле, сделайте так, чтобы даже эти четыре представления были просто (бессмысленными) обычными UIView, которые являются держателями для представлений-контейнеров. Сосать!