automaticallyAdjustsScrollViewInsets no funciona

Creé una aplicación de demostración extremadamente simple para probar la funcionalidad de automaticallyAdjustsScrollViewInsets , pero la última celda de tableView está cubierta por mi barra de tabs.

Mi código de AppDelegate:

 UITabBarController *tabControl = [[UITabBarController alloc] init]; tabControl.tabBar.translucent = YES; testViewController *test = [[testViewController alloc] init]; [tabControl setViewControllers:@[test]]; [self.window setRootViewController:tabControl]; 

Mi código testViewController (subclase de UITableViewController):

 - (void)viewDidLoad { [super viewDidLoad]; self.automaticallyAdjustsScrollViewInsets = YES; self.tableView = [[UITableView alloc] initWithFrame:self.view.bounds]; self.tableView.dataSource = self; self.tableView.scrollIndicatorInsets = self.tableView.contentInset; //[self.view addSubview:self.tableView]; // Do any additional setup after loading the view. } - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return 20; } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { UITableViewCell *cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@""]; cell.textLabel.text = @"test"; return cell; } 

¿Es esto un error en iOS 7? Si no, ¿qué hice mal?

    Creo que automaticallyAdjustsScrollViewInsets solo funciona cuando la view tus controladores es un UIScrollView (una vista de tabla es una).

    Tu problema parece ser que la view tu controlador es una UIView regular y tu UITableView es solo una subvista, por lo que tendrás que:

    • Haga que la tabla vea la vista “raíz”.

    • Ajuste las inserciones manualmente:

       UIEdgeInsets insets = UIEdgeInsetsMake(controller.topLayoutGuide.length, 0.0, controller.bottomLayoutGuide.length, 0.0); scrollView.contentInset = insets; 

    Editar:

    Parece que el SDK es capaz de ajustar algunas vistas de desplazamiento a pesar de no ser la vista raíz del controlador.

    Hasta el momento funciona con UIScrollView y UIWebView ‘s scrollView cuando son la subvista en el índice 0 .

    De todos modos, esto puede cambiar en futuros lanzamientos de iOS, por lo que estás más seguro ajustando las plantillas tú mismo.

    Su controlador de vista debe estar directamente en la stack de un UINavigaitonController para que AdjustsScrollViewInsets funcione automaticallyAdjustsScrollViewInsets (es decir, no un controlador de vista hijo)

    Si se trata de un controlador de vista secundaria de otro controlador de vista que está en la stack de navegación, en su lugar puede establecer automaticallyAdjustsScrollViewInsets = NO en el elemento primario. Alternativamente puedes hacer esto:

     self.parentViewController.automaticallyAdjustsScrollViewInsets = NO; 

    Sé que esta publicación es un poco antigua pero acabo de resolver este problema con iOS 11 y swift 4, mi problema actual era que iOS11 tiene una nueva propiedad para validar las inserciones cuando existe ScrollView, esa es contentInsetAdjustmentBehavior que es una propiedad de ScrollView y la propiedad predeterminada es automatic por lo que mi código fue:

     if #available(iOS 11, *) { myScroll.contentInsetAdjustmentBehavior = .never } else { self.automaticallyAdjustsScrollViewInsets = false } 

    Espero que esto resuelva tus problemas también …

    Tengo esta jerarquía:

    1. El controlador de navegación personalizado contiene tabbarcontroller personalizado

    2. tabbarcontroller personalizado contiene varios controladores

    3. estos controladores contienen subvistas y uno de ellos contiene una subclase de uiscrollview.

    Tuve que establecer automáticamente AdjustsScrollViewInsets a NO

     - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view from its nib. self.automaticallyAdjustsScrollViewInsets = NO; 

    en el tabbarcontroller personalizado . Otros controladores en la jerarquía no tienen ningún impacto en el comportamiento de la vista de desplazamiento nested.

    Estaba teniendo el mismo problema, una vista de tabla con relleno superior no deseado.

    Todas las respuestas dicen corregir al establecer automaticallyAdjustsScrollViewInsets = NO , pero eso no eliminaba el relleno para mí.

    Al igual que las otras respuestas aquí, estas instrucciones deben modificarse ligeramente si está utilizando una jerarquía de vistas no estándar.

    Tenía un UIViewController con un UITableViewController incorporado. No funcionaba establecer automaticallyAdjustsScrollViewInsets en Table View Controller.

    En cambio, establecí automaticallyAdjustsScrollViewInsets = NO AdjustsScrollViewInsets automaticallyAdjustsScrollViewInsets = NO en el UIViewController padre que estaba incrustando mi Table View Controller. Eso eliminó exitosamente el relleno en la Vista de Tabla.

     self.textView.contentInset = UIEdgeInsetsMake(1.0,0.0,0,0.0); [self setEdgesForExtendedLayout:UIRectEdgeNone];