1

我正在使用 UITableView。表格视图有一个带有 UIImageView 的 HeaderView,当用户滚动表格视图时它会改变它的高度。

除此之外我还有一个自定义的uiview,用于tableview的部分..我的问题是在为tableview设置内容Inset之后,该部分不跟随表格的滚动..


滚动前

在此处输入图像描述

滚动后

在此处输入图像描述

肯定是内容插入的问题,我做了各种测试,但找不到解决方案...

我希望tableView的部分跟随滚动并在它进入状态栏时停止(self.view.frame.origin.y的大约25个点)

我应该遵循哪条路径来解决我的问题?

这是我正在使用的代码


为节标题注册 Xib

- (void)viewDidLoad {
    [super viewDidLoad];

    _tableView.delegate =  self;
    _tableView.dataSource = self;
    _tableView.separatorStyle = UITableViewCellSeparatorStyleSingleLine;

    [_tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:cellID];

    [_tableView registerNib:[UINib nibWithNibName:@"DashboardTopHeader" bundle:nil] forHeaderFooterViewReuseIdentifier:dashboardTopHeader];

    [self setupHeaderView];
}

生成节标题

#pragma mark - Dashboard Top Header
-(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
    DashboardTopHeader *header = [tableView dequeueReusableHeaderFooterViewWithIdentifier:dashboardTopHeader];
    return header;
}

-(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section {
    return 100;
}

用照片设置 TableView 的 Header 视图

-(void)setupHeaderView {
    _headerView = [[UIView alloc] init];
    _headerView = self.tableView.tableHeaderView;
    _tableView.tableHeaderView = nil;
    [_tableView addSubview:_headerView];

    // 130 is Height of headerView
    CGFloat newHeight = 130 - 50 /2; 

    _tableView.contentOffset = CGPointMake(0, -newHeight);
    _tableView.contentInset = UIEdgeInsetsMake(newHeight, 0, 0, 0 );

    [self updateHeaderView];
}

-(void)updateHeaderView {
    CGFloat newHeight = 130 - 50 /2;
    CGRect headerFrame = CGRectMake(0, -newHeight, self.tableView.frame.size.width, 130);

    if (self.tableView.contentOffset.y < newHeight) {
        headerFrame.origin.y = self.tableView.contentOffset.y;
        headerFrame.size.height = - self.tableView.contentOffset.y + 50/2;
    }

    _headerView.frame = headerFrame;
}

使用 TableView 委托滚动内容

-(void)scrollViewDidScroll:(UIScrollView *)scrollView {
    [self updateHeaderView];
}
4

0 回答 0