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


Quiero tener varios botones y otros objetos en un largo UIScrollView en mi aplicación. En storyboard, agregué un UIScrollView para llenar la vista entre, y luego creé un IBOutlet en mi .archivo h. Recogí el scroller en mi .m archivo, y luego se utiliza 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 desplazador que se extiende debajo de lo que puede ver en la vista. Mi problema es que como agrego butones a mi vista en storyboard, 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é.

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

Author: Sanjay Joshi, 2013-06-03

3 answers

ACTUALIZACIÓN

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

ORIGINAL

La forma más fácil de manejar esto es simplemente hacer que la vista en su storyboard sea más alta. Cuando se ejecuta la aplicación, cualquiera de los controladores de vista de contenedor normales (UINavigationController, UITabBarController, UISplitViewController, o incluso UIViewController cuando es el controlador de vista raíz de su ventana) redimensionará la vista para que quepa en la pantalla y se desplazará.

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

procedimiento xcode para cambiar el tamaño de una vista de guion gráfico

Cambié el tamaño del controlador de vista de "Inferred" a "Freeform". Luego cambié la altura de su vista de 460 a 800. (Por cierto, control-mayús-clic le da un menú de todos los objetos bajo el cursor.)

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

simulador ejecutando la aplicación de ejemplo

Como puede ver, la jerarquía de vistas se redimensionó para adaptarse a la pantalla, pero las subviews de UIScrollView no se reposicionaron, y la vista de desplazamiento establezca el tamaño de su contenido apropiadamente. (Eso solo puede funcionar correctamente con el diseño automático, sin embargo...)

 114
Author: rob mayoff,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-08-08 22:21:24

Por lo tanto, un ejemplo para usted 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 después agregarlo como una subvista en su desplazamiento.

 2
Author: ggrana,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-06-03 02:13:06

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

Saludos, Kel

 0
Author: Michael Henry,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-06-03 02:16:51