iOS - Rellenar el espacio vertical disponible
Frecuentes
Visto 523 equipos
0
Soy nuevo en el desarrollo de iOS, así que disculpe la ignorancia.
Tengo 2 vistas, una UIWebView
y otra vista que contiene controles para navegar por las páginas cargadas en la vista web (que se muestra a continuación).
La barra de control está oculta a veces, y me gustaría tener la UIWebView
para llenar dinámicamente el espacio disponible independientemente de si la barra de control se muestra u oculta.
¿Cómo puedo lograr esto y cuál es la forma preferida (diseño automático, mediante programación, etc.)?
2 Respuestas
1
Supongo que está utilizando el diseño automático en su guión gráfico. Debería tener siete restricciones en la vista web y la barra de herramientas:
Estas restricciones anclan los bordes superior, izquierdo y derecho de la vista web a la vista raíz; los bordes izquierdo, inferior y derecho de la barra de herramientas a la vista raíz; y el borde inferior de la vista web al borde superior de la barra de herramientas.
Debe conectar una salida en su controlador de vista a la restricción inferior en la barra de herramientas (la restricción resaltada en la captura de pantalla):
La constante de esta restricción es cero de forma predeterminada, lo que ancla el borde inferior de la barra de herramientas a la parte inferior de la vista raíz. Para ocultar la barra de herramientas, establezca la constante de la restricción a la altura de la barra de herramientas. Probablemente quieras animarlo:
- (void)hideToolbar {
[UIView animateWithDuration:0.2 animations:^{
self.toolbarBottomConstraint.constant = self.toolbar.frame.size.height;
[self.view layoutIfNeeded];
}];
}
Para mostrar la barra de herramientas, vuelva a establecer la constante de la restricción en cero:
- (void)showToolbar {
[UIView animateWithDuration:0.2 animations:^{
self.toolbarBottomConstraint.constant = 0;
[self.view layoutIfNeeded];
}];
}
Respondido 08 Oct 14, 22:10
0
Podrías hacer esto de varias maneras; la mejor manera es combinarse con cualquiera de sus prácticas de codificación anteriores en el proyecto.
Puede cambiar el marco en layoutSubviews:
- (void)layoutSubviews {
CGRect frame = self.webView.frame;
frame.size.height = self.bottomBar.frame.origin.y;
self.webView.frame = frame;
}
Podrías agregar restricciones:
- (void)loadView {
[self.webView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:[_webView]-[_bottomBar]" options:0 metrics:nil views:NSDictionaryOfVariableBindings(_webView, _bottomBar)]];
}
También podría agregar restricciones en Storyboard, pero no sé cómo hacer un gif que demuestre esto. También debe considerar esto solo si ya está utilizando un guión gráfico.
Si está animando la posición de la barra inferior, probablemente querrá mantener sincronizado el tamaño del marco de su vista web. El uso de NSLayoutConstraints hará que esto suceda automáticamente; o puede actualizar el marco de la vista web en el mismo bloque de animación.
Otra cosa a investigar sería mantener el marco de la vista web igual, haciendo coincidir la altura máxima a la que aparecerá. Cuando muestre y oculte la barra inferior, ajuste webView.scrollView.contentInset
para cambiar el relleno de contenido inferior.
Respondido 07 Oct 14, 15:10
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas ios or haz tu propia pregunta.
¿Está creando las vistas en código o en un guión gráfico o xib? - rob mayoff