How do I set the height of tableHeaderView (UITableView) with autolayout?

后端 未结 12 1256
后悔当初
后悔当初 2020-11-27 10:23

I\'m been smashing my head against the wall with this for last 3 or 4 hours and I can\'t seem to figure it out. I have a UIViewController with a full screen UITableView insi

12条回答
  •  死守一世寂寞
    2020-11-27 10:56

    In my case viewDidLayoutSubviews worked better. viewWillLayoutSubviews causes white lines of a tableView to appear. Also I added checking if my headerView object already exists.

    - (void)viewDidLayoutSubviews
    {
        [super viewDidLayoutSubviews];
    
        if ( ! self.userHeaderView ) {
            // Setup HeaderView
            self.userHeaderView = [[[NSBundle mainBundle] loadNibNamed:@"SSUserHeaderView" owner:self options:nil] objectAtIndex:0];
            [self.userHeaderView setNeedsLayout];
            [self.userHeaderView layoutIfNeeded];
            CGFloat height = [self.userHeaderView systemLayoutSizeFittingSize:UILayoutFittingCompressedSize].height;
            CGRect headerFrame = self.userHeaderView.frame;
            headerFrame.size.height = height;
            self.userHeaderView.frame = headerFrame;
            self.tableView.tableHeaderView = self.userHeaderView;
    
            // Update HeaderView with data
            [self.userHeaderView updateWithProfileData];
        }
    }
    

提交回复
热议问题