iOS 7 UITableView: cómo eliminar espacio entre la barra de navegación y la primera celda
ios7 (16)
A partir de iOS 7, obtendrá automáticamente un encabezado de grupo y algo de espacio. Compare su aplicación con la de Configuración y verá. Puede solucionarlo diciéndole a UITableView que configure la altura del encabezado lo más pequeño posible. Consulte Cómo ocultar el primer encabezado de grupo .
mi problema es que con iOS 7 en UITableView
agrupado hay un espacio desde la parte superior de la tabla y la primera celda.
Lo extraño es que cuando cargo el contenido por primera vez, la tabla aparece bien, como en la primera imagen, pero cuando me desplazo hacia abajo, aparece un espacio entre la primera y la primera celda, como en el segundo:
Con estilo claro, este comportamiento no aparece, pero desafortunadamente necesito usar una vista de tabla agrupada.
Alguna idea sobre?
En el UIViewController.h
iOS9 SDK tenemos un método:
@property(nonatomic,assign) BOOL automaticallyAdjustsScrollViewInsets NS_AVAILABLE_IOS(7_0); // Defaults to YES
no es una propiedad, entonces
self.automaticallyAdjustsScrollViewInsets = NO;
debiera ser
-(BOOL)automaticallyAdjustsScrollViewInsets{
return NO;
}
Estaba viendo este espacio extra en la parte superior de una de las vistas de mi mesa en una situación muy extraña.
Después de que agregué un UIScrollView
como la vista raíz de mi primer controlador en mi pila de navegación, si presentaba el siguiente controlador como una transición de Show Detail
, mi próximo controlador tendría el espacio sobre su vista de tabla.
La solución para mí fue cambiar la transición a Present Modally
y todo volvió a la normalidad.
La parte más extraña del cambio de segue fue que antes de agregar mi vista raíz como un UIScrollView
, mi segmentación Show Detail
presentaba el siguiente controlador modalmente. Sin embargo, después de que agregué la raíz UIScrollView
, la transición de Show Detail
estaba presionando en el siguiente controlador (que no era lo que yo quería).
Estoy trabajando con Xcode 7.3.1
, iOS9
y swift 2
. Me gustaría compartir lo que funcionó para mí:
Solo agregue esto en su método ViewDidLoad
self.automaticallyAdjustsScrollViewInsets = false;
Había un espacio encima de UITableView y también entre las celdas. Encontré mi solución en 2 respuestas diferentes arriba ... poniéndola de nuevo para que nadie pierda ambas soluciones.
Esto eliminó el espacio de arriba:
self.automaticallyAdjustsScrollViewInsets = NO;
y esto eliminó los espacios debajo de las celdas: estableciendo el atributo ''Estilo'' de UITableView en ''Normal''
La respuesta fue muy divertida para mí y para mi equipo, y funcionó a las mil maravillas
- En el Creador de interfaces, solo mueva la vista de tabla debajo de otra vista en la jerarquía de vistas.
RAZÓN:
Observamos que esto ocurre solo para la Primera Vista en la Jerarquía de Vista, si esta primera vista es una UITableView . Entonces, todas las otras UITableViews similares no tienen esta sección molesta, excepto la primera. Intentamos mover el UITableView fuera del primer lugar en la jerarquía de vistas, y todo estaba funcionando como se esperaba.
La solución más simple a este problema en el tipo agrupado tableView
es:
tableView.tableHeaderView = [[UIView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, self.tableView.bounds.size.width, 0.01f)];
Me doy cuenta de que esto fue respondido hace mucho tiempo, pero para cualquier otra persona que se encuentre en una situación similar, compartiré lo que terminó trabajando para mí:
Si está utilizando un xib, seleccione la vista de nivel superior y configure ''Barra de estado'' en ''Ninguno'' en el área Métricas simuladas del Inspector de atributos. Se corrigió mi problema de espaciado.
Para mí esto no funcionó
self.automaticallyAdjustsScrollViewInsets = NO;
Esto solo provocó que la vista de tabla se ubicara debajo de NavigationBar.
Lo que funcionó para mí fue entrar en mi guión gráfico y cambiar el tamaño de mi tableView. Parece que mi tableView tenía un espacio de 20 píxeles en la parte superior para permitir el statusBar. Lo escale y todo se alineó perfectamente.
Para resolver este problema, asegúrese de haber desmarcado este campo en ViewController:
En ViewController >> Attributes Inspector >> Diseño (desmarcado - Ajustar las configuraciones de la vista de desplazamiento )
si esto no es suficiente, intente esto en TableView, establezca Style en plain :
Esto resolverá su problema
Si está utilizando una UITableView con estilo agrupado y solo 1 grupo, utilice un estilo simple en lugar de resolver su problema.
UITableViewController *tableViewController;
tableViewController = [[UITableViewController alloc] initWithStyle:UITableViewStylePlain];
Solo agregue esto en su método ViewDidLoad
self.automaticallyAdjustsScrollViewInsets = NO;
Tuvo un problema similar, incluso estableciendo automáticamente AdjustsScrollViewInsets en NO. Esto resuelto para mí:
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section;
{
return CGFLOAT_MIN;
}
Vaya al inspector de atributos del Controlador de Vista seleccionando xib o el controlador en Storyboard. Desmarque la casilla Ajustar la vista de desplazamiento en el diseño . Solucionará el problema
chicos! Yo tuve el mismo problema. TableView apareció con espacio libre entre la barra de navegación y la primera celda. Este código me salvó:
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
if (section == 0) {
return 10;
}
else return 2;
}
resuelve mi problema similar:
if ([[UIDevice currentDevice].systemVersion floatValue] >= 7){
tableView.contentInset = UIEdgeInsetsMake(-20, 0, 0, 0);
}