Tengo todos mis controles establecidos en el interface builder (muchas etiquetas, botones, etc). ¿Cómo puedo poner a todos en un desplazamiento de la vista en el interface builder para que yo pueda tener más espacio y ser capaz de desplazarse hacia arriba y hacia abajo para revelar más controles? Qué tengo que hacer esto a través de programación?

InformationsquelleAutor erotsppa | 2009-10-05

10 Comentarios

  1. 30

    Abrir la vista que tiene todos los controles y etiquetas, etc. (en el Interface Builder). Seleccionar Todo. A continuación, en el Editor de menú, seleccione Incrustar En, a continuación, Desplácese a la Vista.

    Nota: en más viejas versiones de Xcode, esto es en el menú Diseño, luego Incrustar Objetos En… (desplazamiento de la vista).

    • Marc W me pegaba a él.
    • esto no funciona como se esperaba. Todo está bajo un UIScrollView ahora, pero cuando me carga la aplicación, nada es desplazable. Por qué?
    • En IB, asegúrese de que el scrollview es lo suficientemente pequeño como para que toda cosa es visible en la vista cuando la aplicación se ejecuta. En otras palabras, sus límites/marco debe ser menor o igual a la vista en la que reside. Luego, en su aplicación, es necesario establecer el scrollview.contentSize = tamaño de la vista con todos los botones, etiquetas, etc. Esto será más grande que la estructura de los límites establecidos para el scrollview. Si todo se hace bien, entonces usted debe ser capaz de desplazarse con ningún otro trabajo de su parte.
    • No podía conseguir que funcione, pero ¿cómo se diseño las cosas por debajo de los 480 altura en el interface builder de todos modos? No parece que la vamos a estirar la ventana
    • Tuve que hacer mi punto de vista como un nivel superior, donde yo podría ser tan grande como yo quería. Luego tuve que integrar en un desplazamiento de la vista y, a continuación, mueva eso en mi vista principal. Cambiar las cosas es un dolor. Deseo Interface Builder abramos vistas en su propia ventana en lugar de la vista principal de la ventana.
    • No estoy seguro de si lo hizo el paso dentro de su código, por ejemplo, en la vista del controlador de viewDidLoad para establecer el scrollview.contentSize a ser el tamaño de la vista más grande. Que es importante. Si todavía no lo recibe, hacer una pequeña prueba rápida aplicación con sólo un UIImageView dentro de un UIScrollView y el uso de Apple de muestras, si usted tiene problemas.

  2. 25

    Mi solución preferida, donde no es necesario codificar el tamaño de la contentSize:


    NOTA: usted podría ser capaz de evitar el código fuente de las piezas de esta usando el truco aquí: https://stackoverflow.com/a/11239123/153422 – aunque yo no lo he probado todavía.

    El resto de este truco … usted todavía necesita usar de todos modos


    1. Mover todos los controles en una sola UIView (IB: seleccionar todo, y luego ir de Diseño > Incrustar Objetos En … > View)

    2. Conexión que solo UIView a su código fuente mediante un IBOutlet de la propiedad (ver más abajo)

    3. EN el CÓDIGO FUENTE, NO el INTERFACE BUILDER (IB está roto, tiene bugs donde se establece el origen de la UIScrollView incorrectamente – intenta centrar la vista. Apple nunca se molestó en comprobar básica errores, suspiro): Mover el único UIView en un UIScrollView (véase el código de abajo).

    4. Uso sizeThatFits a «automáticamente» establecer el tamaño correcto.

    Código (StackOverflow no me deja poner el código dentro de una lista numerada. Suspiro)

    Archivo de encabezado:

    /** outlet that you hook up to the view created in step 1 */
    @property(nonatomic, retain) IBOutlet UIView *masterView;

    Archivo de clase:

    /** inside your viewDidLoad method */
    [scrollview addSubview: masterView]; //step 3
    scrollView.contentSize = [masterView sizeThatFits:CGSizeZero]; //step 4

    …aunque yo no lo he comprobado recientemente, IIRC funciona en las dos 2.x y 3.x

    • Esta solución funciona muy bien. Gracias por publicar
    • Esto también funciona bien en el 4.x – todavía estoy usando en aplicaciones, sin problemas.
    • esto funciona en iOS 4.2 en el IPhone. no olvides UIScrollView la altura debe ser la misma de igual o superior nivel de UIView para ViewController. Yo había estado jugando con la configuración y se olvidó de cambiar este. Se confundió, ya que parece que todavía rebote a una posición incorrecta.
    • No hay ningún punto de llamar a sizeThatFits aquí. Es suficiente para establecer el desplazamiento de la vista contentSize para el tamaño de la masterView.
    • Si mal no recuerdo, que de no funcionar correctamente en las viejas versiones de SDK (aunque el docs hizo sonar como si debería funcionar). Si funciona ahora, genial.
    • Gracias por la gran idea! Pensé que usted podría dar formato a una UIView como que y agregarlo a un UIScrollView (aunque me pasé un montón de tiempo tratando de adaptarse a todo mi contenido dentro de un UIScrollView demasiado grande para su propio bien), pero nunca me habría pesar de que el uso de la sizeThatFits: método! Pavor!
    • Genial, funciona incluso en 2012.

  3. 4

    Su fácil:

    Añadir un scrollview de su punto de vista.
    Cambiar el tamaño de la scrollview (por ejemplo, hacer 700 píxeles de largo).
    Empezar a poner tus controles
    Cuando usted quiere poner/controles de edición en la parte inferior (invisble) parte, seleccione el scrollview y cambiar el eje Y la posición de inicio a -300.
    Voila.
    Después de la edición de el Y-posición de inicio de nuevo a 0, o lo que sea.

    • Alternativamente, usted puede aumentar el tamaño, para luego disminuir de nuevo. El desplazamiento sería bueno, pero no estoy sorprendido de que no está implementado
    • Si usted hace esto, entonces usted debe también manualmente (re)establecer el desplazamiento de la vista del tamaño de «marco» de la página de vista de tamaño (la vista en el portal) Y establecer el «contentSize» para el contenido total de tamaño. La posterior predeterminado es 0,0 y si contentSize no es más grande que la de marco.tamaño, entonces no desplazamiento se producirá. Es una buena estrategia adicional junto con las otras dos, así que gracias!
  4. 4

    No sé si es sólo a mí, pero he intentado seguir las instrucciones en cada una de las otras respuestas aquí y ninguno de ellos funcionó. Ninguna de las respuestas incluyen todo lo necesario, cada uno supongo suponiendo que sabemos hacer algo para dejar que fuera parte. Finalmente lo entendí con la ayuda de red de artesanos. Así que… estoy lista aquí TODOS los pasos necesarios para conseguir que esto funcione:

    1. En InterfaceBuilder, agregar una Vista y, a continuación, añadir sus controles (o si los controles que ya existen en la vista principal, puede seleccionar todos los controles y, a continuación, ir a Editor | Embed En | Vista, a continuación, arrastre el nuevo punto de Vista por lo que es por sí mismo fuera de la vista principal). Este punto de Vista puede ser de cualquier tamaño que te guste.

    2. En InterfaceBuilder, agregar un Desplazamiento de la Vista a su vista principal, y del tamaño que ocupan toda la vista principal.

    3. Agregar el código que aparece a continuación para su UIViewController y el Encabezado de los archivos de Clase.

    4. En InterfaceBuilder, conectar la Vista que contiene los controles para ‘contentView’ en el Propietario del Archivo. Conectar el Desplazamiento de Ver a ‘scrollView’ en el Propietario del Archivo.

    Archivo De Encabezado:

     @interfaz MyViewController : UIViewController 
    @property(nonatomic, retener) IBOutlet UIScrollView *scrollView; 
    @property(nonatomic, retener) IBOutlet UIView *contentView; 
    

    Archivo De Clase:

     @sintetizar scrollView, contentView; 
    
    - (void)viewDidLoad 
    { 
    [super viewDidLoad]; 
    [auto.scrollView addSubview:auto.contentView]; 
    auto.scrollView.contentSize = auto.contentView.límites.tamaño; 
    } 
    
    - (void)viewDidUnload 
    { 
    auto.scrollView = nil; 
    auto.contentView = nil; 
    [super viewDidUnload]; 
    } 
    
  5. 3

    Seleccione todos los objetos que desea incluir en un desplazamiento de la vista y ve a el menú Diseño, seleccione «Incrustar Objetos En» y elegir la opción «Desplazamiento de la Vista».

  6. 1

    Aunque esta pregunta es muy viejo, voy a sugerir una solución que he encontrado como yo tenía el mismo problema y no fue capaz de encontrar mucha ayuda:

    Cuando en IB, si desea colocar objetos fuera de los 420 píxeles, sólo asegúrese de que usted mismo de haber seleccionado no especificado para todos los de la Barra de Estado, Barra Superior, y la Barra Inferior de la Vista que contiene el Desplazamiento de la Vista con todos los objetos. De esta manera, usted será capaz de cambiar manualmente el tamaño de la pantalla (para la Vista). A continuación, puede seguir Ximonn consejos sobre cómo cambiar el tamaño de la H valor para el Desplazamiento de la Vista, tener el acceso a todos los demás objetos, trabajar con ellos y, a continuación, deshacer cambios para H valor y, a continuación, establecer la necesaria Bares.

  7. 1

    Importante poco de cosa.
    Para desplazarse grandes subvista (UIImageView por ejemplo) en UIScrollView recordar, para esta subvista, desmarque la opción «Interacción con el Usuario Habilitado» casilla de verificación en InterfaceBuilder -> la Vista de la ventana. O hacerlo a través de programación.

    subview.userInteractionEnabled = NO;

    De lo contrario, esta subvista va a la pila en la pantalla sin ningún efecto.

  8. 0

    He estado buscando esto por un par de días, y finalmente encontré este sitio con una solución que funcionó para mí.

    Desplazamiento con UIScrollView

    Básicamente, usted tiene su vista principal con un UIScrollView objeto en ella. Luego otro contenido de la vista con todo su contenido en ella. A continuación, puede agregar el contenido de la vista a la vista de desplazamiento. Y, finalmente, establecer el tamaño de la scrollview contenido del tamaño para el tamaño de la vista del contenido.

  9. 0

    Sé, este hilo es un poco viejo… Pero alguien podría encontrar en google, es la altura en la clasificación.
    Escribí este pequeño ayudante Método para hacer el trabajo:

    - (void)addSubview:(UIView *)theSubView toScrollView:(UIScrollView *)theScrollView
    {
        [theScrollView addSubview:theSubView];
        theScrollView.contentSize = theSubView.bounds.size;
    }

    Usted sólo tiene que declarar dos IBOutlet en el encabezado (por ejemplo, contentView y scrollView) y llamar al método como este, donde quiera que desee cargar un UIView en un UIScrollView con su código fuente:

    [self addSubview:contentView toScrollView:scrollView];

    Que yo he llamado en viewDidLoad

    Este método de características de iOS

  10. 0

    La respuesta seleccionada funciona bien para Xcode 3.

    Sin embargo, para Xcode 4, los menús se han reorganizado ligeramente.

    A hacer lo mismo en Xcode 4 seleccione sus puntos de vista, a continuación, utilizar:

    Editor > Incrustar En > Desplazar a la Vista

Dejar respuesta

Please enter your comment!
Please enter your name here