iphone - Cómo deshabilitar el desplazamiento en la tabla UITableView cuando el contenido cabe en la pantalla
ios scroll (9)
Creo que quieres establecer
tableView.alwaysBounceVertical = NO;
Tengo algunas tablas (de estilo agrupado) en mi aplicación de iPhone (solo en parte de la pantalla y agregadas con Interface Builder
, no subclasificadas de UITableViewController
) que el 80% del tiempo son pequeñas y caben en la pantalla. Cuando la tabla se ajusta a la pantalla, me gustaría desactivar el desplazamiento para que quede un poco más limpio. Pero si la tabla se sale de la pantalla (cuando más tarde se agregan filas), me gustaría habilitar el desplazamiento nuevamente (porque de lo contrario no puede ver ese contenido).
¿Hay alguna forma de hacer esto? Parece que no puedo entenderlo. Yo sé que hacer:
tableView.scrollEnabled = NO;
pero no estoy seguro de dónde, o si tengo que calcular el tamaño del objeto de la tabla o algo para que esto funcione.
Actualización : Aquí está la solución que finalmente me funcionó:if (table.contentSize.height < table.frame.size.height) {
table.scrollEnabled = NO;
}
else {
table.scrollEnabled = YES;
}
reloadData
este código después de llamar a reloadData
en la tabla, y calcula los tamaños correctos y parece funcionar.
table.frame.size.height
es el tamaño real del objeto (puede verlo en Interface Builder
) que se muestra en la pantalla, mientras que table.contentSize.height
es la altura de: el encabezado, el pie de página y la altura de cada célula añadida.
En Swift:
tableView.alwaysBounceVertical = false
Entonces, hay varias respuestas y requiere un contenido completo en un solo lugar, así que estoy agregando esta respuesta:
Si está utilizando AutoLayout, al configurar esto solo debería funcionar para usted:
- En codigo:
tableView.alwaysBounceVertical = false
- o en Interface Builder:
Solo encuentra esta opción y untick
opción " Bounce Vertically
".
Aquí está la referencia:
Si no estás utilizando AutoLayout:
func viewDidLayoutSubviews() {
// Enable scrolling based on content height
self.tableView.scrollEnabled = tableView.contentSize.height > tableView.frame.size.height
}
La altura predeterminada es 44.0f para una celda de vista de tabla, creo. ¿Debe tener su fuente de datos en mano en un Array? Luego simplemente verifique si [array count]*44.0f
va más allá de los límites del marco y, si es así, establezca tableview.scrollEnabled = NO
; de lo contrario, tableview.scrollEnabled = NO
en YES. Hágalo donde encuentre la fuente de datos para esa vista de tabla en particular.
Puede configurar habilitar / deshabilitar rebotar o desplazarse por la vista de tabla seleccionando / deseleccionando estos en el área de Vista de desplazamiento
Puede editar esto en su guión gráfico (si está utilizando uno). Debajo de la vista de tabla hay una casilla de verificación que dice "Desplazamiento habilitado". Desmarque y ya está.
Puedes verificar el número de celdas visibles usando esta función:
- (NSArray *)visibleCells
Este método devolverá una matriz con las celdas que están visibles, por lo que puede contar la cantidad de objetos en esta matriz y compararla con la cantidad de objetos en su tabla. Si es igual ... puede deshabilitar el desplazamiento usando:
tableView.scrollEnabled = NO;
Como mencionó @Ginny ... podríamos tener problemas con las células parcialmente visibles, por lo que esta solución funciona mejor en este caso:
tableView.scrollEnabled = (tableView.contentSize.height <= CGRectGetHeight(tableView.frame));
En caso de que esté utilizando autoLayout, esta solución hace el trabajo:
tableView.alwaysBounceVertical = NO.
prueba esto
[yourTableView setBounces:NO];
// Enable scrolling based on content height self.tableView.scrollEnabled = table.contentSize.height > table.frame.size.height;