¿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!
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:
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:
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...)
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.
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
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