human for developer app iphone interface-builder

iphone - for - xcode ios 12



¿Cómo agregar UIScrollView al constructor de interfaces? (10)

Abra la vista que tiene todos los controles y etiquetas, etc. (en Interface Builder). Seleccionar todo. Luego, en el menú Editor, seleccione Incrustar en, y luego en Vista de desplazamiento.

Nota: en versiones anteriores de Xcode, esto se encuentra en el menú Diseño, luego Incrustar objetos en ... (vista de desplazamiento).

Tengo todos mis controles establecidos en el creador de interfaces (muchas etiquetas, botones, etc.). ¿Cómo los pongo todos en una vista de desplazamiento en el generador de interfaces para poder tener más espacio y poder desplazarme hacia arriba y hacia abajo para revelar más controles? ¿Tengo que hacer esto programáticamente?


Aunque esta pregunta es muy antigua, sugeriré una solución que encontré, ya que tuve el mismo problema y no pude encontrar mucha ayuda allí:

Cuando esté en IB, si desea colocar objetos fuera del píxel 420, asegúrese de haber seleccionado Sin especificar para todas las barras de estado, la barra superior y la barra inferior para la vista que contiene la vista de desplazamiento con todos los objetos. De esta manera, podrá cambiar manualmente el tamaño de la pantalla (para la Vista). Luego, puede seguir los consejos de Ximonn sobre el cambio de tamaño del valor H para la Vista de desplazamiento, tener acceso a todos los demás objetos, trabajar con ellos y luego deshacer los cambios para el valor H y luego configurar las barras necesarias.


Es fácil:

Primero agrega una vista de desplazamiento a tu vista. Cambie el tamaño de la vista de desplazamiento (por ejemplo, haga que tenga 700 píxeles de longitud). Comience a poner sus controles Cuando desee colocar / editar controles en la parte inferior (no visible), seleccione la vista de desplazamiento y cambie la posición de inicio Y a -300. Voila Después de editar, establezca la posición de inicio en Y de nuevo en 0 o lo que sea.


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

Desplazamiento con UIScrollView

Básicamente tienes tu vista principal con un objeto UIScrollView en ella. Luego otra vista de contenido con todo tu contenido en ella. Luego agrega la vista de contenido a la vista de desplazamiento. Y finalmente, establezca el tamaño del tamaño del contenido de la vista de desplazamiento al tamaño de la vista del contenido.


La respuesta seleccionada funciona bien para Xcode 3.

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

Para hacer lo mismo en Xcode 4, selecciona tus vistas y luego usa:

Editor> Incrustar en> Vista de desplazamiento


Lo sé, este hilo es un poco más antiguo ... Pero alguien podría encontrarlo en Google, está muy clasificado. Escribí este pequeño método de ayuda para hacer el trabajo:

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

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

[self addSubview:contentView toScrollView:scrollView];

Lo llamé en viewDidLoad

Este método cuenta con iOS


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

NB: es posible que pueda evitar las partes de código fuente de esto utilizando el truco aquí: https://.com/a/11239123/153422 , aunque todavía no lo he probado.

El resto de este truco ... todavía necesitas usar de todos modos

  1. Mueva todos los controles a un solo UIView (en IB: seleccione todos, luego vaya Diseño> Incrustar objetos en ...> Ver)

  2. Conecte esa única UIView a su código fuente usando una propiedad IBOutlet (ver más abajo)

  3. EN CÓDIGO FUENTE, NO SE HAYA INTERFAZ AL CONSTRUCTOR (IB se rompe aquí, tiene errores donde establece el origen de UIScrollView de forma incorrecta. Intenta centrar la vista. Apple nunca se molestó en buscar errores básicos, suspiro): Mueve la vista individual en un UIScrollView (ver código abajo).

  4. Use sizeThatFits para establecer "automáticamente" el tamaño correcto.

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

Archivo de cabecera:

/** 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 no he comprobado esto recientemente, IIRC funciona tanto en 2.xy 3.x


No sé si solo soy yo, pero traté de seguir las instrucciones de cada una de las otras respuestas aquí y ninguna de ellas funcionó. Ninguna de las respuestas incluyó todo lo que se necesitaba, cada una supongo que suponemos que sabemos que debemos hacer algo, así que dejar esa parte fuera. Finalmente lo descubrí con la ayuda del artesano rojo. Entonces ... estoy enumerando aquí TODOS los pasos necesarios para que esto funcione:

  1. En InterfaceBuilder, agregue una Vista y luego agregue sus controles a ella (o si sus controles ya existen en la vista principal, puede seleccionar todos sus controles y luego ir a Editor | Incrustar | Vista, luego arrastrar esa nueva Vista para que sea todo por sí mismo fuera de la vista principal). Esta vista puede ser del tamaño que desee.

  2. En InterfaceBuilder, agregue una Vista de desplazamiento a su vista principal y ajuste su tamaño para que ocupe toda la vista principal.

  3. Agregue el código que figura a continuación a sus archivos de encabezado y clase UIViewController.

  4. En InterfaceBuilder, conecte la vista que contiene sus controles a ''contentView'' en el propietario del archivo. Conecte la vista de desplazamiento a ''scrollView'' en el propietario del archivo.

Archivo de cabecera:

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

Archivo de clase:

@synthesize scrollView, contentView; - (void)viewDidLoad { [super viewDidLoad]; [self.scrollView addSubview:self.contentView]; self.scrollView.contentSize = self.contentView.bounds.size; } - (void)viewDidUnload { self.scrollView = nil; self.contentView = nil; [super viewDidUnload]; }


Pequeña cosa importante Para desplazarse por la subvista grande (por ejemplo, UIImageView) en UIScrollView, recuerde, para esta subvista, desmarque la casilla de verificación "Interacción del usuario habilitada" en InterfaceBuilder -> Ver ventana. O hacerlo programáticamente.

subview.userInteractionEnabled = NO;

De lo contrario, esta subvista se apilará en la pantalla sin ningún efecto.


Seleccione todos los objetos que desea colocar en una vista de desplazamiento y vaya al menú Diseño, elija "Incrustar objetos en" y elija "Vista de desplazamiento".