He creado UIImageView con la ayuda de la Interfaz de Bulder. Ahora quiero colocar la etiqueta en su interior (como su subvista). En el código se puede escribir algo como: [myUIImageView addSubview:myUILabel]; Pero puedo hacerlo con la ayuda de IB? He encontrado la solución para UIView, pero no puede encontrar algo similar para UIImageView.

InformationsquelleAutor kpower | 2010-03-10

4 Comentarios

  1. 112

    Usted puede agregar una subvista a UIImageView en el interface builder, por razones que sólo se sabe que Apple! Tienes razón en decir que puede addSubview mediante programación, pero luego, la sobrecarga de configuración autoresizing máscaras y colocación de subvistas todos deben ser gestionadas en el código, que es engorroso.

    Así que no hay una solución fácil. En lugar de arrastrar una instancia de UIImageView en la punta, sólo tienes que arrastrar un UIView y cambiar su clase para UIImageView de UIView (cmd+4 opción de inspector). La única diferencia se encuentra en la punta por defecto imageView instancia y su nuevo UIImageView subclase instancia es: no se puede establecer la imagen para su nueva imageView de punta (cmd+1 opción). Así, en el -viewDidLoad método apropiado de los viewController, imagen de conjunto a esta toma de UIImageView.

    Al hacerlo, usted es libre de añadir subvistas a su «ahora UIImageView» instancias en el interface builder, que es mucho más fácil.

    Espero que esto ayude . . .

    • Muchas gracias por una idea muy interesante (el consejo).
    • Gracias! Supongo que es así por la razón que si usted pone algo por encima de su UIImageView, lo que es más de una imagen de fondo de una imagen real (como en el HTML, tiene un <img> de la etiqueta referencia a una imagen real, que un lector de pantalla «entiende», o puede establecer la propiedad CSS background-image de otra etiqueta, en cuyo caso la imagen es sólo el estilo, no el contenido real). Pero en el caso de iOS, no hay ninguna propiedad backgroundImage (sólo hacks mediante el fondo) … así que no entiendo (y usted puede agregar una subvista a UIImageView directamente en el código como se ha mencionado, por lo que es estúpido).
    • Entonces es probable que sea mejor para crear una UIView, poner un UIImageView como subvista cubriendo todo su tamaño y añadir subvistas para el UIView.
    • Que habría que añadir más carga en la vista de jerarquía, y usted tendrá que asegurarse de que el auto-cambio de tamaño de las máscaras de los principales UIView y la UIImageView los partidos de siempre. Y también vamos a tener para asegurarse de que el UIImageView es siempre la parte inferior de la mayoría de la vista en la vista de jerarquía!
    • No hay problemas de rendimiento. El punto de vista de la jerarquía puede manejar cientos de subcapas. Por supuesto que usted necesita para establecer autoresizing máscara, pero yo no lo veo como un problema. Usted siempre tiene que establecer autoresizing. Y la parte inferior de la mayoría de la vista no es un problema! Tenga en cuenta que es todavía mejor que la creación de IBOutlets y configuración de la interfaz de usuario en código.
    • Sí, acordado! Esto también podría ser una solución.
    • Yo también no ser capaz de agregar subvista en UIImageView de Interface Builder !!! Mediante programación podría hacerlo.
    • Este es un caso extremo, pero si dependen de la clasificación de su imageView llamando sizeToFit, este método no funcionará. Ni idea de por qué.
    • Desagradable solución! Gracias

  2. 12

    Me gustaría añadir respuesta.

    Mientras que es una mierda no se puede agregar subvista a UIImageView, usted puede conseguir el mismo efecto mediante la incorporación de UIView con transparente (clear color) de fondo.

    A continuación, poner el UIImageview ANTES.

    Por lo que el UIView tiene la subvistas y la UIImageview es el fondo de la UIView.

    Creo que apple intención.

    Aquí está una captura de pantalla:

    Apple Generador de Interfaz: agregar subvista a UIImageView

    Aquí está el resultado:

    Apple Generador de Interfaz: agregar subvista a UIImageView

    No olvides poner de fondo como de color claro

    Apple Generador de Interfaz: agregar subvista a UIImageView

    Ahora, si alguien pudiera realmente me apunte a un tutorial de cómo hacer esto va a ser genial. Me pasé horas y horas haciendo la comprobación respondió manera. La marcada respuesta es una buena respuesta pero muy poco intuitivo, porque usted no puede ver la imagen de fondo claramente mientras se trabaja. Creo que la mía es la forma correcta de hacerlo.

    • La pregunta es: ¿puedo añadir directa subvista de UIImageView con IB? Y la respuesta fue no. Por eso fue marcada como correcta. Quiero decir, yo sabía acerca de su «sustituciones» y no estaba interesado en «una manera de hacer esto», sino en la posibilidad de este en particular. Pero la idea es mucho mejor, así que upvote!
    • Ah ya no es exactamente la respuesta a su pregunta. Pero parece ser la forma en que se supone que debe ser. Gracias por upvote.
    • UIView debe contener entre otros puntos de vista. UIImageView se supone que contiene la imagen y eso es todo. Así que si quieres una subvista dentro de un UIImageView, la manera de hacerlo sería a través de una transparente UIView en frente de la UIImageView. Usted puede hacer esto de la marcada forma pero estoy seguro de que apple debe tener la intención de ser de esta manera
  3. -2

    En la última versión de XCode(4.5) hay una opción de arrastrar y soltar los controles necesarios para el padre.

    Es muy fácil.
    Adjunta captura de pantalla de la misma. Quité la Etiqueta y el campo de texto y un Botón para UIImageViewApple Generador de Interfaz: agregar subvista a UIImageView

    • ++10 Nirav – Wow – por SUPUESTO, por SUPUESTO ! … su técnica simple me salvó una botella entera de Excedrin Extra de Fuerza.
    • No lo entiendo. Xcode 4.6.2 no me deja arrastrarlo a la UIImageView, ya sea en el lienzo, ni en el esquema. En el esquema, voy a empezar con la UIImageView y a continuación en el mismo nivel, el UILabel. Yo izquierdo del ratón en la etiqueta y arrástrelo hacia arriba. Xcode muestra una línea donde la UILabel va a ir si yo liberación. Claramente, la línea que nunca se sangría: sus estancias en el nivel raíz. Cuando me suelte, el UILabel pueden intercambiar su lugar con el UIImageView, pero nunca se en es (sangrado por debajo de ella). He intentado un par de modificadores (mayúsculas, opción), sin éxito. ¿Qué se me olvida?
    • No se puede arrastrar un UIView dentro de un UIImageView en el Interface Builder ni siquiera en Xcode 8.
    • Es XCode 9 ahora, y todavía no será capaz de arrastrar y soltar UIView en un UIImageView en IB.
    • Xcode 10.0 – mismo..
  4. -4

    Utilizar este código:

    UIImage *image = [UIImage imageNamed:@"background.png"];
    UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
    [self.view insertSubview:imageView atIndex:0];
    

    (reemplazar de fondo.png con la imagen) (reemplazar atIndex:0 con cualquiera que sea el lugar en el .índice de la raíz de la que desea insertar la imagen y su apagado.

Dejar respuesta

Please enter your comment!
Please enter your name here