我創建了一個非常簡單的測試用例來重現此問題。UITableView tableFooterView顯示在UITableView的頂部 - 錯誤
我想以編程方式設置頁腳視圖到tableview。請注意,我指的是在tableview的最底部的頁腳 - 而不是頁腳(大多數堆棧溢出的答案讓他們感到困惑)。
這裏是我的代碼非常簡單:
- (void)viewDidLoad {
[super viewDidLoad];
UIView *footerContainer = [[UIView alloc] initWithFrame:CGRectZero];
footerContainer.backgroundColor=[UIColor greenColor];
footerContainer.translatesAutoresizingMaskIntoConstraints=NO;
[footerContainer addConstraints:@[[NSLayoutConstraint
constraintWithItem:footerContainer attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual
toItem:nil attribute:NSLayoutAttributeNotAnAttribute multiplier:1.0f constant:100
],
[NSLayoutConstraint
constraintWithItem:footerContainer attribute:NSLayoutAttributeWidth relatedBy:NSLayoutRelationEqual
toItem:nil attribute:NSLayoutAttributeNotAnAttribute multiplier:1.0f constant:[UIScreen mainScreen].bounds.size.width
]]];
self.mytableview.tableFooterView=footerContainer;
[self.view setNeedsLayout];
[self.view layoutIfNeeded];
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
return 10;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell"];
cell.textLabel.text=[NSString stringWithFormat:@"%ld",indexPath.row];
return cell;
}
然而,結果是這樣的:
你可能注意到了,頁腳顯示上的tableview的頂部。這是一個錯誤還是我錯過了什麼?
如果我將tableFooterView更改爲tableHeaderView,那麼它工作正常。所以我期待着同樣的腳步也能工作,但事實並非如此。
設置'translatesAutoresizingMaskIntoConstraints = NO'很可能會破壞tableview用於定位頁腳的任何方法。 – dan
您是否使用約束,因爲您將(或可能)在頁腳視圖中具有動態內容?如果是這樣,我可以給你一個解決方案...... – DonMag
@DonMag是的,我一直在尋找一種解決方案,它將使用約束來設置它,而不是手動設置框架。我的實際應用具有動態大小的頁腳內容。 –