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

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

Ответы [ 7 ]

85 голосов
/ 17 февраля 2010

Я добился того, что хотел, щелкнув элемент пользовательского интерфейса (кнопка, изображение, текст и т. Д.) И перейдя в меню «Макет» (вверху экрана), а затем использовал «вынести на передний план», «отправить на задний план и т. д.

В Xcode 4.2 вы найдете опции в меню вверху: Editor-> Arrange

24 голосов
/ 17 февраля 2010

Существует порядок Z без использования подпредставлений. С одной стороны, есть пункты меню «отправить на фронт» и «отправить назад». Однако, если вы смотрите на элементы в вашем представлении как на дерево элементов, вы можете переупорядочить их там (а не в самом представлении), просто перетаскивая.

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

13 голосов
/ 16 февраля 2010

В разработке XCode элемент пользовательского интерфейса или «представление» находится перед другим представлением, когда оно является подвидом этого представления. Например, если представление B является фоном, а представление C является элементом управления, чтобы разместить элемент управления над фоном (т. Е. Ближе к пользователю), вы бы сделали представление C подпредставлением представления B. В Интерфейсном Разработчике это выполняется с помощью перетаскивая элемент управления в фон.

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

Документ Windows and Views из документации Apple для разработчиков на iPhone может помочь разобраться.

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

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

11 голосов
/ 16 августа 2013

В XCode 4.6 Interface Builder откройте «Структура документа» с помощью меню («Редактор» -> «Показать схему документа») или нажмите полупрозрачную кнопку в левом нижнем углу холста. Под списком «Объектов» отображается Z-порядок представлений, и пользователь может перетаскивать их, чтобы изменить порядок между собой. Чем ближе к нижней части экрана, тем «ближе» этот элемент к пользователю.

3 голосов
/ 17 апреля 2013

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

2 голосов
/ 11 августа 2016

В Свифт:

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

     superview?.bringSubviewToFront(self)
1 голос
/ 29 декабря 2014

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

self.view.sendSubviewToBack(imageView);

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


Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...