Tengo un UINavigationController simple. En el método init estoy creando y agregando un UITableView como una subvista.Descubriendo initWithFrame: self.view.frame Problema de 20 píxeles (barra de estado) de una vez por todas
- (id)init {
self = [super init];
if (self) {
NSLog(@"%@", NSStringFromCGRect(self.view.frame)); // {{0, 20}, {320, 460}}
tableView = [[UITableView alloc] initWithFrame:self.view.frame];
[self.view addSubview:tableView];
}
return self;
}
Me parece que siempre encuentro el mismo problema molesto cuando trabajo con proyectos nuevos. Las subvistas agregadas terminan 20 píxeles debajo de la barra de navegación.
¿Por qué acabo con {{0, 20}, {320, 460}} para self.view.frame? No quiero forzar el marco de CGRect, preferiría configurarlo en función del marco del controlador de vista para no tener problemas con los cambios dinámicos de cuadros (anclaje a red, llamadas telefónicas, etc. donde la barra de estado es más alta) .
Actualización: También noté que obtengo una altura de 460 para el marco. Eso tampoco tiene sentido. En mi caso, en realidad tengo una barra de pestañas, por lo que la altura no debería ser menos la barra de estado, menos la barra de navegación y menos las alturas de la barra de pestañas.
Gracias
porque la barra de estado de 20 píxeles de altura – SAKrisT