Tengo algunas tablas (estilo agrupado) en mi aplicación de iPhone (solo en una parte de la pantalla y agregué sin Interface Builder
embargo, no subclasificadas UITableViewController
) que el 80% del tiempo son pequeñas y caben en la pantalla. Cuando la tabla cabe en la pantalla, me gustaría deshabilitar el desplazamiento, para que quede un poco más limpio. Pero si la tabla se sale de la pantalla (cuando más tarde se le agregan filas), me gustaría habilitar el desplazamiento nuevamente (porque de lo contrario no podrá ver ese contenido).
¿Hay alguna forma de hacer esto? Parece que no puedo entenderlo. Yo sé 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 funcionó para mí:
if (table.contentSize.height < table.frame.size.height) {
table.scrollEnabled = NO;
}
else {
table.scrollEnabled = YES;
}
Ejecuto este código después de llamar reloadData
a la tabla, y calcula los tamaños correctos y parece funcionar.
table.frame.size.height
es el tamaño real del objeto (puede ver esto en Interface Builder
) que se muestra en la pantalla, mientras table.contentSize.height
que las alturas de: el encabezado, el pie de página y la altura de cada celda se suman.
fuente
Respuestas:
Creo que quieres configurar
fuente
interface builder
desmarcando rebote y rebote horizontal / verticalmente.Puede verificar el número de celdas visibles con esta función:
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 comparar con la cantidad de objetos en su tabla ... si es igual ... puede deshabilitar el desplazamiento usando:
Como mencionó @Ginny ... podríamos tener problemas con las celdas parcialmente visibles, por lo que esta solución funciona mejor en este caso:
En caso de que esté usando autoLayout, esta solución hace el trabajo:
fuente
if (table.contentSize.height < table.frame.size.height)
>> ver edición en la publicación original.En Swift:
fuente
Por lo tanto, hay varias respuestas y requiere un contenido completo a la vez, así que agrego esta respuesta:
Si está utilizando AutoLayout, al configurar esto solo debería funcionar para usted:
tableView.alwaysBounceVertical = false
Simplemente encuentre esta opción y la opción
untick
"Bounce Vertically
".Aquí está la referencia:
Si no está utilizando AutoLayout:
fuente
prueba esto
fuente
Puede configurar habilitar / deshabilitar el rebote o desplazarse por la vista de tabla seleccionando / deseleccionando estos en el área Vista de desplazamiento
fuente
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á.
fuente
// Enable scrolling based on content height self.tableView.scrollEnabled = table.contentSize.height > table.frame.size.height;
fuente
La altura predeterminada es 44.0f para una celda de vista de tabla, creo. ¿Debe tener su fuente de datos a mano en una matriz? Luego solo verifique si
[array count]*44.0f
va más allá de los límites del marco y, si es asítableview.scrollEnabled = NO
, configúrelo en SÍ. Hágalo donde calcule la fuente de datos para esa vista de tabla en particular.fuente