在tableview中添加一个footerview后,如果表只有一个单元格,则页脚在单元格的底部显示一点高。无论桌子有多少个单元,如何让它显示在桌面的底部?
答案 0 :(得分:0)
footerView只是背景,添加一个你真正想要的视图,就像这样:
func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
return 100
}
func tableView(_ tableView: UITableView, viewForFooterInSection section: Int) -> UIView? {
let footerView = UIView.init()
footerView.backgroundColor = .red
// footerView is just the background, add a view that you really want
let subView = UIView.init(frame: CGRect.init(x: 20, y: 20, width: UIScreen.main.bounds.width - 40, height: 100 - 40))
subView.backgroundColor = .yellow
footerView.addSubview(subView)
return footerView
}
答案 1 :(得分:0)
这是我在tableFooterView上设置视图的代码及其工作正常。
@property (weak, nonatomic) IBOutlet UITableView *tblView;
@property (weak, nonatomic) IBOutlet UIView *viewTableFooterView;
- (void)viewDidLoad {
[super viewDidLoad];
_tblView.tableFooterView = _viewTableFooterView;
_tblView.backgroundColor = [UIColor greenColor];
[_tblView reloadData];
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return 10;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *simpleTableIdentifier = @"SimpleTableItem";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:simpleTableIdentifier];
}
cell.textLabel.text = [NSString stringWithFormat:@"%ld",(long)indexPath.row];
return cell;
}
检查代码,如果它不适合您,请告诉我。
答案 2 :(得分:0)
这是因为您要添加的页脚视图是您在UITableView
内显示的内容的页脚。话虽如此,有一种方法可以获得您想要的输出。您可以执行的操作是将UIView
拖到故事板中添加的UITableViewCell
下方,以显示为页脚。
设置UILabel
的约束或您想要在此视图中显示的任何内容,我的意思是不添加固定的高度限制,否则您将获得恼人的布局中断警告。
复制此页脚视图并将其添加到UITableView
的底部,并为其添加固定高度,使其成为您在UITableView
中添加的页脚视图的副本。有点像这样:
现在,为页脚视图的这个高度约束创建一个插座到UIViewController
。
现在在你的viewDidLoad
中你可以做的是检查添加单元格后UITableView
的高度是否小于屏幕边界并相应地进行,如下所示:
- (void)viewDidLoad {
[super viewDidLoad];
//dont show footer view if cells are within screen bounds
if (numberOfCells * cellHeight < [UIScreen mainScreen].bounds.size.height){
UIView *footerView = mainTableView.tableFooterView;
CGRect tempFrame = footerView.frame;
tempFrame.size.height = 0.0f;
footerView.frame = tempFrame;
mainTableView.tableFooterView = footerView;
}else{
//dont show footerview below table view if cells are outside screen bounds
[footerHeightConstraint setConstant:0.0f];
}
}
注意:我错过了与高度相关的边缘情况,例如行*高度等于或小于屏幕边界的产品,所以你必须看一看在那。