UITableview 向上滚动 UISectionHeader 的一半

Posted

技术标签:

【中文标题】UITableview 向上滚动 UISectionHeader 的一半【英文标题】:UITable view scrolled up by half of UISectionHeader 【发布时间】:2015-10-19 06:32:18 【问题描述】:

我的 UITableView 总是向上滚动可能是部分标题的一半。 我有一个 44 像素高度的自定义部分标题。

在向下滚动并释放焦点后,表格视图会到达合适的位置。该错误仅在初始化后发生。

这是我的viewDidLoad 代码:

    [self.tableView removeUsslessSeparators];
    [self.tableView setEstimatedRowHeight:50];
    [self.tableView setEstimatedSectionHeaderHeight:0];
    [self.tableView setSectionIndexColor:[UIColor colorWithHexString:@"#000000"]];
    [self.tableView setSectionIndexBackgroundColor:[UIColor whiteColor]];
    [self.tableView setRowHeight:UITableViewAutomaticDimension];
    [self.tableView setSectionHeaderHeight:UITableViewAutomaticDimension];

    [self.tableView registerNib:[VOIOrbitContactsListSectionHeader nibRepresentation] forHeaderFooterViewReuseIdentifier:[VOIOrbitContactsListSectionHeader preferredIdentifier]];
    [self.tableView registerNib:[VOIOrbitContactCell nibRepresentation] forCellReuseIdentifier:[VOIOrbitContactCell preferredIdentifier]];

    self.searchBarController = [VOISearchBarController searchViewControllerWithDelegate:self];
    [self containerAddChildViewController:self.searchBarController toContainerView:self.searchControllerContainer useAutolayout:YES];


    [self.searchControllerContainerTopOffsetConstraint setConstant:75];
    [self.tableViewTopOffsetConstraint setConstant:self.searchControllerContainerTopOffsetConstraint.constant + 4] ;
    [self.tableView setContentInset:UIEdgeInsetsMake( self.searchControllerContainerHeightConstraint.constant , 0, 50, 0)];

//    CGPoint offset = self.tableView.contentOffset;
//    self.tableView.contentOffset = offset;

 //   [self.tableView setContentOffset:CGPointZero animated:NO];

    [self checkIfPlusButtonNeedsToBeHidden];
    [NSNotificationCenter addObserverForName:VOCChangeNotificationNameForEntity([VOCOrbit class]) usingBlock:^(NSNotification *note) 
        [self.tableView reloadData];
    ];

我试图使用不同的解决方案以编程方式向下滚动表格视图。但它们都不起作用。

【问题讨论】:

【参考方案1】:
[self.searchControllerContainerTopOffsetConstraint setConstant:75];
[self.tableViewTopOffsetConstraint setConstant:self.searchControllerContainerTopOffsetConstraint.constant + 4] ;

不要使用内容偏移,而是直接将表格的位置提供给:

[self.table setframe:CGRectMake(0,0,width,height)];

然后,将您的标题框架作为表头传递

table.tableHeaderView = yourHeaderView;

希望,这对你有用。

【讨论】:

以上是关于UITableview 向上滚动 UISectionHeader 的一半的主要内容,如果未能解决你的问题,请参考以下文章

UITableview 向上滚动 UISectionHeader 的一半

UITableView 仅在向上滚动时更新,而不是向下滚动

在 UITableView 上加载数据向上滚动

NSFetchedResultsController 添加新记录时如何防止 UITableView 向上滚动?

UITableView 在 reloadData 上向上滚动

如果向上滚动,UITableview 标题不会再次显示