2010-02-16 10 views

Respuesta

83

Logré lo que quería haciendo clic en un elemento ui (botón, imagen, texto, etc.) y yendo al menú Diseño (en la parte superior de la pantalla) y luego usé "traer al frente", "enviar a volver", etc.

en Xcode 4.2 se encuentra el menú de opciones en la superior: Editor-> Organizar

+5

+1 ... es histérico para mí que haya todas estas explicaciones complicadas, pero la respuesta correcta no fue presentada. (Supongo que Kendall sí mencionó los elementos del menú, pero no entró donde estaban ubicados). Puramente especulación, pero me imagino que los objetos CALayer DEBEN tener algún concepto de z-index. – livingtech

+14

En Xcode 4.2, encontrará las opciones en el menú arriba: Editor-> Organizar – MdaG

+1

También debe seleccionar el elemento que desea traer al frente en la pantalla de diseño, (que probablemente esté oculto) no en la barra lateral. .. WTF Xcode? – amleszk

10

En el desarrollo de XCode, un elemento de la interfaz de usuario o "vista" se encuentra delante de otra vista cuando se trata de una subvista de esa vista. Por ejemplo, si la vista B es un fondo y la vista C es un control, para colocar el control sobre el fondo (es decir, más cerca del usuario), haría que C sea una subvista de la vista B. En Interface Builder, esto se logra mediante arrastrando el control al fondo.

Básicamente, estás mirando una estructura de árbol, con las vistas en el fondo cerca de la raíz del árbol y las vistas en primer plano (más cerca del usuario) cerca de las hojas del árbol.

El documento Windows and Views de la documentación del desarrollador del iPhone de Apple puede ayudar a aclarar las cosas.

Nota 1: Casi nunca debe superponer controles individuales, como botones y campos de texto. Hacerlo va en contra de las pautas de la interfaz de usuario de Apple. Usted puede, por supuesto, siga haciendo esto si lo desea, pero debe tener en cuenta que está saliendo de la zona de seguridad. Si simplemente está escribiendo una aplicación de iPhone "normal", su mejor opción es seguir la forma de hacer las cosas de Apple.

Nota 2: Si, por alguna razón, usted no necesita cosas que se superponen de manera específica, se puede hacer uso de CALayer objetos para mantener todo ordenado correctamente. Los objetos CALayer son parte de la tecnología Core Animation de Apple.

+0

+1 concisa explicó – TechZen

+0

que ver lo que está diciendo, pero lo que si tuviera múltiples controles dentro de la misma vista. Por ejemplo, supongamos que tengo un botón MyButton dentro de una vista de MyView, pero quería que una Imagen sobrepase el botón (y sí, quiero una imagen sobre un botón, no quiero usar la propiedad de imagen inherente del botón). ¿Hay una manera posible de hacer esto o no? – foreyez

+0

Sí, * se puede * hacer, aunque puede ser un poco más difícil que simplemente arrastrar y soltar. Ver http://stackoverflow.com/questions/466297/is-there-a-proper-way-to-handle-overlapping-nsview-siblings –

24

Hay un pedido Z sin utilizar subvistas. Por un lado, hay opciones de menú para "enviar al frente" y "enviar al dorso". También, sin embargo, si observa los elementos en su vista como un árbol de elementos, puede volver a ordenarlos allí (en lugar de hacerlo en la vista misma) simplemente arrastrando.

Las subvistas son geniales para agrupar pero no son tan útiles para ordenar (excepto que todo el "conjunto" se mantiene en el mismo nivel).

3

Sé que es una vieja pregunta, pero en xcode 4.6 puedo arrastrar elementos arriba y abajo en la lista a la izquierda. Cuanto menor sea el elemento en la lista, más cerca estará del usuario, p. el elemento inferior de la lista siempre estará visible, a menos que esté fuera de la pantalla. No estoy seguro de cuándo se implementó esto, pero parece más fácil que las otras respuestas.

11

En el Creador de interfaces XCode 4.6, abra el "Esquema del documento" en el menú (Editor-> Mostrar contorno del documento) o haga clic en el botón translúcido en la esquina inferior izquierda del lienzo. En la lista "Objetos", se muestra el orden Z de las vistas y el usuario puede arrastrarlas para cambiar el orden entre ellas. Cuanto más cerca de la parte inferior de la pantalla, más "cerca" ese elemento es para el usuario.

1

Lo que funcionó para mí estaba haciendo ella en el código:

self.view.sendSubviewToBack(imageView); 

No sé por qué, pero ninguna de las otras respuestas arreglado para siempre. Puse la línea de arriba en el método viewDidLoad.


2

En Swift:

Dentro de la vista que desea traer a la parte superior

 superview?.bringSubviewToFront(self) 
Cuestiones relacionadas