IPhone Interface Builder: Z-индекс, Z-порядок кнопки, изображения, элемента пользовательского интерфейса и т. д.?


я перетаскиваю вещи в Построителе интерфейса... Я хотел бы указать, находится ли изображение впереди (например, индикатор) или позади кнопки (например, фон). Я не вижу никакого свойства z-index, как я привык видеть в других средах. Если нет свойство z-index каков наилучший способ сделать то, что я пытаюсь сделать? Спасибо!

7 60

7 ответов:

Я достиг того, что хотел, нажав на элемент пользовательского интерфейса (кнопка, изображение, текст и т. д.) и перейдя в меню макета (в верхней части экрана), а затем я использовал "bring to front", "send to back" и т. д.

в Xcode 4.2 вы найдете опции в меню вверху: редактор - > упорядочить

существует порядок Z без использования подвидов. Во-первых, есть опции меню для "отправить на фронт" и "отправить обратно". Кроме того, если вы посмотрите на элементы в своем представлении как на дерево элементов, вы можете переупорядочить их там (а не в самом представлении), просто перетащив.

Subviews отлично подходят для группировки, но не так полезны для упорядочивания (за исключением того, что весь "набор" остается на том же уровне).

в разработке XCode элемент пользовательского интерфейса или" представление " находится перед другим представлением, когда он является подвидом этого представления. Например, если представление B является фоном, а представление C-элементом управления, чтобы разместить элемент управления над фоном (т. е. ближе к пользователю), вы должны сделать представление C подвидом представления B. В Interface Builder это выполняется путем перетаскивания элемента управления на фоне.

по существу, вы смотрите на древовидную структуру, с видами в фоновом режиме находясь рядом с корнем дерева, и виды на переднем плане (ближе к пользователю), находясь рядом с листьями дерева.

The и документ из документации разработчика iPhone от Apple может помочь прояснить ситуацию.

Примечание 1: вы почти никогда не должны перекрывать отдельные элементы управления, такие как кнопки и текстовые поля. Это противоречит руководящим принципам пользовательского интерфейса Apple. Ты can, конечно, все равно сделайте это, если вы хотите, но вы должны знать, что вы выходите из зоны безопасности. Если вы просто пишете "нормальное" приложение для iPhone, лучше всего придерживаться способа Apple делать вещи.

примечание 2: если по какой-то причине вам нужно, чтобы вещи перекрывались определенным образом, вы можете использовать CALayer объекты, чтобы держать все правильно заказал. Объекты CALayer являются частью основной технологии анимации Apple.

в Xcode 4.6 Interface builder откройте меню" контур документа " (редактор->показать контур документа) или нажмите полупрозрачную кнопку в левом нижнем углу холста. В списке "объекты" отображается Z-порядок представлений, и пользователь может перетаскивать их, чтобы изменить порядок между собой. Чем ближе к нижней части экрана, тем" ближе " этот элемент к пользователю.

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

В Swift:

в представлении, которое вы хотите довести до вершины

     superview?.bringSubviewToFront(self)

то, что работало для меня было делать это в коде:

self.view.sendSubviewToBack(imageView);

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