¿Cómo agregar objetos a UIScrollView que se extienden más allá de UIView desde Storyboard?

Quiero tener varios botones y otros objetos en un UIScrollView largo en mi aplicación. En el guión gráfico, agregué un UIScrollView para completar la vista entre, y luego creé un IBOutlet en mi archivo .h. Sinteticé el scroller en mi archivo .m y luego usé el siguiente código para iniciar el scroller:

 @synthesize scroller = _scroller; - (void)viewDidLoad { [super viewDidLoad]; [_scroller setScrollEnabled:YES]; [_scroller setContentSize:CGSizeMake(640, 3000)]; } 

Así que ahora necesito saber cómo agregar cosas, como botones, al área del desplazamiento que se extiende por debajo de lo que se puede ver en la vista. Mi problema es que a medida que agrego botones a mi vista en el guión gráfico, solo puedo agregar cosas a lo que puedes ver en la vista y, por lo tanto, necesito saber cómo agregar botones a la parte a la que me desplazaré.

Espero que esto esté claro. ¡Gracias por toda tu ayuda!

ACTUALIZAR

He publicado un screencast que recorre esta técnica paso a paso .

ORIGINAL

La forma más sencilla de manejar esto es simplemente hacer que la vista en su guión gráfico sea más alta. Cuando se ejecuta la aplicación, cualquiera de los controladores normales de vista de contenedor ( UINavigationController , UITabBarController , UISplitViewController o incluso UIViewController cuando es el controlador de la vista raíz de su ventana) cambiará el tamaño de la vista para que quepa en la pantalla y se desplace.

Aquí hay un ejemplo de cómo configurarlo en Xcode:

Procedimiento de xcode para cambiar el tamaño de una vista del guión gráfico

Cambié el tamaño del controlador de vista de “Inferido” a “Forma libre”. Luego cambié la altura de su vista de 460 a 800. (Por cierto, el control-shift-clic le da un menú de todos los objetos debajo del cursor).

Esto es lo que sucede cuando lo ejecuto en el simulador:

simulador ejecutando la aplicación de ejemplo

Como puede ver, la jerarquía de vistas se redimensionó para ajustarse a la pantalla, pero las subvistas de UIScrollView no se volvieron a colocar, y la vista de desplazamiento estableció su tamaño de contenido de forma adecuada. (Eso solo puede funcionar correctamente con el autolayout, aunque …)

Entonces, un ejemplo de cómo agregar un botón:

 UIButton *btn = [UIButton buttonWithType:UIButtonTypeRoundedRect]; [btn setTitle:@"Cool title" forState:UIControlStateNormal]; [btn setFrame:CGRectMake(50, 700, 100, 100)]; [btn addTarget:self action:@selector(action:) forControlEvents:UIControlEventTouchUpInside]; [_scroller addSubview:btn]; 

Solo necesita establecer el marco de la vista que desea agregar y luego agregarlo como subvista en su desplazamiento.

Puede usar el inspector de tamaño (parte izquierda de xcode) para posicionarlo. o reposicionarlo programáticamente.

Saludos, Kel